【问题标题】:add a new record into a table with an identity primary key将新记录添加到具有标识主键的表中
【发布时间】:2013-03-23 00:21:10
【问题描述】:

我的数据库中有这个表结构:

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 时,我希望从三个按钮上方的文本字段中将新记录添加到我的数据库中的 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 文本字段的值作为主键保存新行,但主键是身份。

【问题讨论】:

    标签: vb.net


    【解决方案1】:

    您可能希望明确说明哪个字段位于何处,而不是使用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)
    

    【讨论】:

      猜你喜欢
      • 2018-02-17
      • 2011-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-20
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      相关资源
      最近更新 更多