私のデータベースにはこのテーブル構造があります:
CREATE TABLE RIAD (
NumeroR int primary key identity,
NomR varchar(50),
AdresseRueR varchar(50),
CodePostalR int,
VilleR varchar(50),
TelephoneR varchar(50),
NomContactR varchar(50),
CodeReg int,
NombreDePlaces int)
そして私はこのフォームを持っています:
[Ajouter]ボタンをクリックすると、3つのボタンの上のテキストフィールドからデータベースのテーブルRIADに新しいレコードを追加したいと思います。
これは私が試したコードです:
Public cnx As New SqlConnection("data source=localhost; initial catalog=EFF_TSDI_2009_V1; integrated security=sspi")
Public ds As New DataSet
Public adapterRiad As SqlDataAdapter
Public builderRiad As SqlCommandBuilder
Private Sub MajRiad_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
adapterRiad = New SqlDataAdapter()
adapterRiad.SelectCommand = New SqlCommand("SELECT * FROM RIAD", cnx)
adapterRiad.Fill(ds, "RIAD")
DataGridView1.DataSource = ds.Tables("RIAD")
builderRiad = New SqlCommandBuilder(adapterRiad)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim dialog As DialogResult = MessageBox.Show("Voulez vous vraiment ajouter cette personne ?", "Confirmation", MessageBoxButtons.YesNo)
If (dialog = DialogResult.Yes) Then
ds.Tables("RIAD").Rows.Add(nomR.Text, AdresseRueR.Text, CInt(CodePostalR.Text), VilleR.Text, TelephoneR.Text, NomContactR.Text, _
CInt(CodeReg.Text), CInt(NombreDePlaces.Text))
For Each c As Control In Me.Controls
If TypeOf (c) Is TextBox Then
c.Text = String.Empty
End If
Next
adapterRiad.InsertCommand = builderRiad.GetInsertCommand
adapterRiad.Update(ds, "RIAD")
End If
End Sub
しかし、ボタンAjouterをクリックすると、次のエラーが発生します。
入力文字列が正しい形式ではありませんでした。NumeroR列に保存できませんでした。予想されるタイプはInt32です。
<eeeee>
はNomRテキストフィールドに書き込もうとした値であり、VB.netはNomRテキストフィールドの値を主キーとして新しい行を保存しようとしていますが、主キーはIDです。