2013-04-10 124 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

相關問題