2013-05-29 16 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