my Table Screen shot私のエラーは、条件式のデータ型の不一致です
これは私のコードです:ありがとうございました。私のcommand.ExecuteReader
エラーでは、条件式のデータ型の不一致が示されます。
my Table Screen shot私のエラーは、条件式のデータ型の不一致です
これは私のコードです:ありがとうございました。私のcommand.ExecuteReader
エラーでは、条件式のデータ型の不一致が示されます。
conn.Open()
command.CommandText = "INSERT INTO [Physical]([PhysicalNo],[StockCode],[StockName],[SDate],[EditDate],[OnhandQty])" +
"VALUES(@PhysicalNo,@StockCode,@StockName,@SDate,@EditDate,@OnhandQty)"
command.Parameters.AddWithValue("@PhysicalNo", txtPhysicalno.Text)
command.Parameters.AddWithValue("@StockCode", cboStockCode.Text)
command.Parameters.AddWithValue("@StockName", txtstockname.Text)
command.Parameters.AddWithValue("@SDate", cboStockdate.Text)
command.Parameters.AddWithValue("@EditDate", EditPicker.Text)
command.Parameters.AddWithValue("OnhandQty", txtqty.Text)
Dim read1 As OleDbDataReader = command.ExecuteReader
While read1.Read
End While
conn.Close()
data type mismatch
エラーは、入力されたデータ型と一致されていないテーブル内の値を挿入することを意味します。
あなたの列の見出しから、数値データ型の値の場合はdate-time
データ型を、数値データ型の値の場合はint
データ型を挿入する必要があると思います。
この回答が役に立たない場合は、テーブルデザインビューのスクリーンショットを提供してください。
Harshil Shahは私のテーブルスクリーンショットをクリックしてください... – Hackweiser
あなたの列データ型int、text、Date timeです。ここで私が見ているのは、テキスト型のデータ型だけを追加することです。だからあなたのテーブルのデータ型に応じてそれを変更してみてください –
あなたは私を助けてくれてありがとうございます。 – Hackweiser
AddWithValueメソッドが正しく機能するためには、データベースの列に正しいデータ型の値を渡す必要があります。これは、SDateおよびEditDateカラムで最も明白に必要です。 SDATEため
例:
const DATEFORMAT As String = "dd.MM.yyyy";
command.Parameters.AddWithValue("@SDate", _
DateTime.ParseExact(cboStockdate.Text,DATEFORMAT, _
System.Globalization.CultureInfo.InvariantCulture, _
System.Globalization.DateTimeStyles.None))
明らか日付形式、のCultureInfoとDateTimeStylesは、アプリケーションのコンテキスト内で適切なものに調整する必要があります。 TryParseメソッドも参照してください。
他の列では、SQLの実行中に自動的に変換が実行されますが、コマンドにパラメータを追加するときに明示的な変換を行うことをお勧めします。
パラメータを追加するさらに良い方法は、AddWithValueをまったく使用しないことです。 Addメソッドを使用して、パラメータのデータ型(データベース側)を明示的に指定することができます。
Dim par As OleDbParameter = new OleDbParameter("@SDate", OleDbType.Date)
par.Value = DateTime.Parse(cboStockdate.Text)
cmd.Parameters.Add(par)
日時にテキスト入力がここでも適用される変換する(最初のコードサンプルのように)ParseExactを使用するより具体的なアプローチ。
Phil私はそれを試していただきありがとうございます。 – Hackweiser
PhilSがエラーを処理していないため、文字列が有効なDateTimeとして認識されませんでした。 – Hackweiser
PhilS同じエラー文字列が有効なDateTimeとして認識されませんでした。あなたを助けてくれた。 – Hackweiser
入力を表のデータ型 –
と同じに変換してください**最初の**では、最後のparameters.AddWithValueに '@'がありません。 ** 2番目の**では、Insert文に 'ExecuteReader'を使用しています。 'ExecuteNonQuery'を使うべきです。 ** Third **、[AddWithValueを使用しない](http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already/) –
@Chean Sanghaniは、AddWithValueよりも私を助けてくれてありがとう。 – Hackweiser