2013-03-23 58 views
0

我在我的数据库有此表结构:添加新的记录入表中标识的主键

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) 

,我有这种形式:

enter image description here

我想,当我点击按钮Ajouter,从三个按钮上方的文本字段向我的数据库中的表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我得到这个错误:

输入字符串的不正确的format.Couldn't存储在NumeroR列中。预期的类型是Int32。

<eeeee>是我试图在NomR文本字段写入值,和VB.net试图保存新行作为主键NomR文本字段的值,但主键是身份。

回答

0

而不是使用Rows.Add()方法,你可能想明确地指出哪个字段在哪里......这是更多的代码,但停止框架代表你做出假设。

Here是一个参考。相关部分“插入新记录到一个非类型化数据集”

所以,你可以这样做:

Dim newRiadRow As DataRow = ds.Tables("RIAD").NewRow() 

newCustomersRow("NomR") = nomR.Text 
newCustomersRow("AdresseRueR") = AdresseRueR.Text 
'More fields here 

ds.Tables("RIAD").Rows.Add(newRiadRow)