DataAdapter.InsertCommandコマンドを使用してデータベースに新しいレコードを追加しようとしました。それはここでは、データベースにDataAdapter.insertCommand vb.netでデータベースに新しい行を追加できません
を新しいレコードを挿入しません。しかし、なぜ私は知らない私のコードは次のとおりです。
Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click
Dim cnn As New OleDb.OleDbConnection
Dim cmd As New OleDb.OleDbCommand
Dim da As New OleDb.OleDbDataAdapter
Dim ds As New DataSet
Dim dt As New DataTable
cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\1_Project\Project_of_VB_Net\AccessDatabase\StudentDatabase.accdb"
cmd.Connection = cnn
cmd.CommandText = "INSERT INTO StudentData(StudentID) VALUES (@studentid)"
cmd.Parameters.AddWithValue("@studentid", "123")
Try
cnn.Open()
da.InsertCommand = cmd
Catch ex As Exception
Console.WriteLine(ex.Message)
Finally
cnn.Close()
End Try
End Sub
私はそれで間違っているものを見つける助けてください?
クエリを実行する必要があります。 'AddWithValue'は、特に' StudentId'が数字( '' 123 "'はありません)である場合に最適ではありません。しかし、なぜあなたはIDを挿入していますか?それはDBの仕事だ。 – Plutonix
@Plutonix私は、da.insertcommand = cmdは "クエリを実行する"という意味ですか? StudentIDフィールドは、データベースに宣言するときのテキストです。私はIDを挿入します。なぜなら、ボタンをクリックするとIDが挿入されるからです。最初にIDを持つ新しい行が作成されます(IDはテキストで、テキストボックスから入力されます) – Bruce
私はあなたのようにデータアダプタを使用したことはありません。それがどのように機能するかを見てください。アダプタ(cmd.ExecuteNonQuery())を使わずに直接コマンドを使用するか、insertコマンドでデータアダプタを設定し、パラメータをstudentidフィールドにマップし、データテーブルにレコードを挿入してda.Update(dt)を実行してください –