字符串或二进制数据将被截断VB.Net应用程序

时间:2013-04-10 16:47:18

标签: vb.net ado.net

我正在使用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时,我收到以下错误消息:

  

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

     

声明已终止

1 个答案:

答案 0 :(得分:1)

这是因为尝试将过多数据写入您的某个表列。

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

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

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

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