VB.net / SQL 可以存储数字,逗号,小数(2位)和vbcrlf的数据类型?

VB.net / SQL Datatype that can store numbers, comma, decimal(2places) and vbcrlf?

我总是得到 "String or binary data would be truncated" 我已经搜索 google 寻找答案,但我找不到与我的文本框相同的值。

在我的程序中,我有一个文本框(多行),其值为数字、逗号、小数(2 位)和 vbCrlf,如下所示。

1,234,567.89
      9,876,543.21

上图是我的文本框所具有的值的示例。 (注意:请注意上面的数字有 2 个逗号,因为它以百万为单位),我不知道它背后的原因是什么,但如果它只有 1 个逗号,我的代码工作得很好,就像

123,456.78
      987,654.32

我已将 vb.net 数据类型设置为字符串、小数、双精度和对象,但我仍然遇到相同的错误。关于我的 SQL 数据类型,我已经将其设置为 varchar、nvarchar、char,但仍然出现相同的错误。这是我的代码:

*This is my CLASS code title SQLControl

Public Sub AddToJournalEntry(DrCrAmount As Object)
    Try
        Dim strInsert As String = "INSERT INTO JournalEntry (DrCrAmount) " & _
                                  "VALUES (" & _
                                  "'" & DrCrAmount & "') "
        SQLCon.Open()
        SQLCmd = New SqlCommand(strInsert, SQLCon)
        SQLCmd.ExecuteNonQuery()
        SQLCon.Close()
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub

*This my code in my frmMain

Dim sql As New SQLControl

Private Sub btnGenerate_Click(sender As System.Object, e As System.EventArgs) Handles btnGenerate.Click

    Dim format1 As String = "{0,-10} {1,12}"

    Dim Line1Amount, Line2Amount As String

    If lbl1.Text = "Dr" Then
        Line1Amount = String.Format(format1, txtAmount1.Text, vbNullString)
        Line1Amount = Line1Amount.TrimEnd(" ", vbNullString)
    ElseIf lbl1.Text = "Cr" Then
        Line1Amount = String.Format(format1, vbNullString, txtAmount1.Text)
        Line1Amount = Line1Amount.TrimEnd(" ", vbNullString)
    Else
        Line1Amount = String.Format(format1, vbNullString, vbNullString)
        Line1Amount = Line1Amount.TrimEnd(" ", vbNullString)
        lbl1.Text = vbNullString
    End If

    If lbl2.Text = "Dr" Then
        Line2Amount = String.Format(format1, txtAmount2.Text, vbNullString)
        Line2Amount = Line2Amount.TrimEnd(" ", vbNullString)
    ElseIf lbl2.Text = "Cr" Then
        Line2Amount = String.Format(format1, vbNullString, txtAmount2.Text)
        Line2Amount = Line2Amount.TrimEnd(" ", vbNullString)
    Else
        Line2Amount = String.Format(format1, vbNullString, vbNullString)
        Line2Amount = Line2Amount.TrimEnd(" ", vbNullString)
        lbl2.Text = vbNullString
    End If

    Dim myString2 As String = Line1Amount & vbCrLf & Line2Amount

    ****This code is to delete unnecessary spaces and new lines
    myString2 = myString2.TrimEnd(" ", vbNullString, Convert.ToChar(Keys.Return), Convert.ToChar(Keys.LineFeed))

    txtDrCrAmount.Text = myString2

End Sub

Private Sub btnRecord_Save_Click(sender As System.Object, e As System.EventArgs) Handles btnRecord_Save.Click

    sql.AddToJournalEntry(txtDrCrAmount.Text)

End Sub

注意:我的代码已经过编辑,为了您的方便,我已经删除了不必要的代码。

谢谢=) 顺便说一句,我是一名新手程序员。

每当您看到消息时......

string or binary data would be truncated 

想想你自己...字段不够大,无法容纳我的数据。

检查您table的table结构。我认为您会发现字段的长度不足以容纳您要插入的数据。例如,如果 journalentry 字段是一个 varchar(50) 字段,而您尝试将 51 个字符放入其中,则会出现此错误。