【问题标题】:textbox data to database, error文本框数据到数据库,错误
【发布时间】:2013-05-29 17:32:27
【问题描述】:

谁能解释我的问题?我有这个表单代码,它应该获取文本框的文本并将其放入数据库中。但是,我遇到了错误,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

我已经阅读了许多类似我的问题,但我不知道如何解决这个问题。

【问题讨论】:

    标签: vb.net textbox executenonquery


    【解决方案1】:

    这意味着您的输入大于 SQL 中声明的列长度。调整 VARCHAR(或您拥有的任何 CHAR 类型字段)的长度以适应您的最大可能输入长度。

    【讨论】:

    • 我已经做到了,但在 aspx 页面中,但我认为你是在建议我在 .vb 文件中也这样做???喜欢: Dim iDUsuario As String = RFC.ToString (0,50)
    • 任何被引用的地方,你都可以限制长度……你也可以增加数据库允许的长度。
    【解决方案2】:
    Dim nomUsuario As String = Name.ToString
    

    您确定您的 Name 不是字符串吗?

    Dim iDtipo As Integer = "1"
    

    应该是Dim iDtipo As Integer = 1

    如果您的“iDtipo”字段是 VARCHAR

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

    如果是数字

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

    【讨论】:

    • 我不明白,.ToString命令不是告诉Name是字符串吗?
    • 不,.ToString 表示将某些值转换为字符串 var .. 我的回答有什么问题吗?
    • 哦,我明白了,对不起,我是视觉方面的新手......:P
    【解决方案3】:

    我做到了:这是错误的:

    代替:

        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
    

    因为我不想告诉编译器字符串变量将存储文本框的字符串值,我很傻XD

    【讨论】:

    • 更好地命名您的控件,例如文本框的 txtName .. 组合框的 cboName 等...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-03
    • 1970-01-01
    • 1970-01-01
    • 2011-07-26
    相关资源
    最近更新 更多