我正在使用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
时,我收到以下错误消息:
字符串或二进制数据将被截断。
声明已终止
答案 0 :(得分:1)
这是因为尝试将过多数据写入您的某个表列。
在row(0) = nun_insc.Text
处设置一个断点,然后从那里单步执行代码以确定它是哪一列以及为什么要写入太多文本,然后弄清楚如何修复它。 (解决方案是缩短您尝试编写的文本或扩大表中的列以存储更多数据。)
为了使其更清晰,请在运行时逐步执行代码的每一行。对于每一行:
当您确定它是哪一列时,您可以根据应用程序的需要决定是否需要限制用户可以输入的文本量,或者使列更大以容纳更多字符。