2013-04-10 123 views
1

我使用VB.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

这是由于尝试将太多数据写入到您的某个表列中引起的。

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

为了使其更清楚,请逐步通过每行代码当它运行。对于每一行:

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

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

+0

我试过,但我无法弄清楚问题在哪里,我得到的错误信息是在这一行:'adapter.Update(ds,“Etudiant”)' – 2013-04-10 17:06:23

+0

你必须*看*数据在代码运行时将其分配给每个“行”,并查看其中哪一个对列太大。我们无法为您做到这一点,因为我们不知道您的代码中分配了哪些内容。 (我看不到'adresse.Text'是什么时候你的代码运行;只有你可以。) – 2013-04-10 17:08:58

+0

Okey感谢您的帮助,我只是增加了数据到我的列在sql服务器的长度,它的工作 – 2013-04-10 17:13:12

相关问题