2013-05-29 28 views
0

任何人都可以對我的問題投下一些光?我有這個表單代碼,它應該把文本框的文本放到數據庫中。我,然而,得到一個錯誤,SqlException was unhandled by user code: String or binary data would be truncated. The statement has been terminated.文本框數據到數據庫,錯誤

下面是代碼:

Imports System.Data 
Imports System.Data.SqlClient 
Imports System.Configuration 

Partial Class Usuarios 
    Inherits System.Web.UI.Page 

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 

    End Sub 

    Protected Sub BotonA_Click(ByVal sender As Object, ByVal e As System.EventArgs) 
     Dim iDUsuario As String = RFC.ToString 
     Dim nomUsuario As String = Name.ToString 
     Dim apellidoP As String = ApellidoPaterno.ToString 
     Dim apellidoM As String = ApellidoMaterno.ToString 
     Dim passUsuario As String = contrasena.ToString 
     Dim nombre As String = seudonimo.ToString 
     Dim iDtipo As Integer = "1" 

     Dim con As New SqlConnection(ConfigurationManager.ConnectionStrings("dbconnection").ConnectionString) 
     con.Open() 
     Dim cmd As New SqlCommand("INSERT INTO usuarios (iDUsuario, nomUsuario, apellidoP, apellidoM, passUsuario, nombre, idTipo) VALUES (@iDUsuario, @nomUsuario, @apellidoP, @apellidoM, @passUsuario, @nombre, @iDtipo)", con) 
     cmd.Parameters.AddWithValue("@iDUsuario", iDUsuario) 
     cmd.Parameters.AddWithValue("@nomUsuario", nomUsuario) 
     cmd.Parameters.AddWithValue("@apellidoP", apellidoP) 
     cmd.Parameters.AddWithValue("@apellidoM", apellidoM) 
     cmd.Parameters.AddWithValue("@passUsuario", passUsuario) 
     cmd.Parameters.AddWithValue("@nombre", nombre) 
     cmd.Parameters.AddWithValue("@iDtipo", iDtipo) 
     cmd.ExecuteNonQuery() 
    End Sub 

End Class 

我讀過許多問題和問題,如我的,但我沒有任何線索,我怎麼可能會解決這個問題。

回答

1

這意味着您的輸入大於SQL中列聲明的長度。調整VARCHAR(或任何CHAR類型字段)的長度以適應您的最大可能輸入長度。

+0

我已經做到了,但在aspx頁面中,但我認爲你建議我在.vb文件中也這樣做?例如:Dim iDUsuario As String = RFC.ToString(0,50) – DarkVader

+0

它是引用的任何地方,您可以限制長度......您還可以增加數據庫允許的長度。 – Haney

0
Dim nomUsuario As String = Name.ToString 

你確定你的名稱不串?

Dim iDtipo As Integer = "1" 

應該Dim iDtipo As Integer = 1

如果你的 「iDtipo」 字段是VARCHAR

cmd.Parameters.AddWithValue("@iDtipo", iDtipo.ToString) 

如果數字

cmd.Parameters.AddWithValue("@iDtipo", iDtipo) 
+0

我不明白,是不是.ToString命令告訴Name是字符串? – DarkVader

+0

不,.ToString表示將某些值轉換爲字符串var ..與我的答案有關的任何問題? – matzone

+0

哦,我看到了,對不起,我是一個完整的新手在視覺...:P – DarkVader

0

我做到了:這是什麼是錯的:

來代替:

Dim iDUsuario As String = RFC.ToString 
    Dim nomUsuario As String = Name.ToString 
    Dim apellidoP As String = ApellidoPaterno.ToString 
    Dim apellidoM As String = ApellidoMaterno.ToString 
    Dim passUsuario As String = contrasena.ToString 
    Dim nombre As String = seudonimo.ToString 
    Dim iDtipo As Integer = "1" 

是:

Dim iDUsuario As String = RFC.Text 
    Dim nomUsuario As String = Name.Text 
    Dim apellidoP As String = ApellidoPaterno.Text 
    Dim apellidoM As String = ApellidoMaterno.Text 
    Dim passUsuario As String = contrasena.Text 
    Dim nombre As String = seudonimo.Text 
    Dim iDtipo As Integer = 1 

因爲我wans't告訴給該字符串變量將存儲在文本框的字符串值,編譯器,我傻的XD

+0

更好地命名您的控件與初始像txtName的文本框..組合框的cboName等... – matzone