1

我正在开发一个应用程序VB.Net,这是我的应用程序的主要形式:

http://i.stack.imgur.com/a4KfQ.png

当我单击按钮时,我希望Ajouter将控件中的所有信息添加到数据库中的表中。

这是表结构:

Create table Etudiant (
   num_insc varchar(20) primary key,
   CIN varchar(8),
   sexe varchar(1),
   nom_prenom varchar(30),
   date_naiss date,
   adresse varchar(150),
   Code_niveau varchar(5)
)

这是我尝试过的代码:

Dim ds As New DataSet
Dim row As DataRow
Dim builder As SqlCommandBuilder
Dim adapter As SqlDataAdapter



Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    code_niveau.Items.Add("BTS1")
    code_niveau.Items.Add("BTS2")
    adapter = New SqlDataAdapter("SELECT * FROM Etudiant", cn)
    adapter.Fill(ds, "Etudiant")

End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    row = ds.Tables("Etudiant").NewRow
    row(0) = num_insc.Text
    row(1) = CIN.Text
    If (sexe_f.Checked) Then
        row(2) = sexe_f.Name
    Else
        row(2) = sexe_m.Name
    End If
    row(3) = nom_prenom.Text
    row(4) = date_naiss.Value
    row(5) = adresse.Text
    row(6) = code_niveau.Text
    ds.Tables("Etudiant").Rows.Add(row)
    builder = New SqlCommandBuilder(adapter)
    adapter.InsertCommand = builder.GetInsertCommand
    adapter.Update(ds, "Etudiant")
End Sub

但是当我单击按钮时,Ajouter我收到此错误消息:

字符串或二进制数据将被截断。

该语句已终止

.

4

1 回答 1

1

这是由于试图将太多数据写入表列之一。

在 处设置断点row(0) = nun_insc.Text,并从那里单步执行您的代码以找出它是哪一列以及为什么要写入太多文本,然后找出需要如何修复它。(解决方案将是缩短您尝试编写的文本或加宽表中的列以存储更多数据。)

为了更清楚,请在代码运行时逐步执行每一行代码。对于每一行:

  • 查看运行该语句时它将写入的列,并查看它允许多少个字符。
  • 查看即将写入该列的实际值,看看它是否等于或小于您在上述第一步中获得的数字。

当您确定它是哪一列时,您可以根据应用程序的需要决定是否需要限制用户可以输入的文本数量,或者使列更大以容纳更多字符。

于 2013-04-10T16:56:50.490 回答