【问题标题】:Im trying to insert a data into database using vb我正在尝试使用 vb 将数据插入数据库
【发布时间】:2020-08-06 11:43:04
【问题描述】:

我正在尝试使用 vb 在 mySql 数据库中添加新数据。但错误总是说 [unit_type] 不允许为 null 。我什至更改了主数据库中的列设置。我禁用了非空复选框。

Dim datetoday = Date.Today

Try
    command = "INSERT INTO assets_table ([date_created], [unit_type]) VALUES ('" & datetoday & "' , '" & frm_viewAssets.lbl_fetch.Text & "')"

    Dim cmd As MySqlCommand = New MySqlCommand(command, myconn.open())

    cmd.Parameters.Add(New MySqlParameter("date_created", CType(datetoday, String)))
    cmd.Parameters.Add(New MySqlParameter("unit_type", CType(frm_viewAssets.lbl_fetch.Text, String)))

    Try
        cmd.ExecuteNonQuery()
        cmd.Dispose()
        myconn.close()
    Catch ex As Exception
        myconn.close()
    End Try

【问题讨论】:

  • 啊!为什么要将Date 转换为Stringdate_created 列的数据类型是什么?如果是文本类型,为什么?如果是日期类型,为什么不插入 Date 值?

标签: mysql database vb.net visual-studio command


【解决方案1】:

您尝试使用参数是正确的,但您做错了。您将参数添加到命令中,但是您仍然插入了文字值,而不是在 SQL 中使用参数占位符。这个:

command = "INSERT INTO assets_table ([date_created], [unit_type]) VALUES ('" & datetoday & "' , '" & frm_viewAssets.lbl_fetch.Text & "')"

应该是这样的:

command = "INSERT INTO assets_table ([date_created], [unit_type]) VALUES (@date_created, @unit_type)"

然后我认为您在创建参数名称时也需要在参数名称中添加“@”前缀。

【讨论】:

    【解决方案2】:

    将数据库对象保留在本地,以便确保它们已关闭和处置。即使出现错误,Using...End Using 块也会为您处理。

    在 .Execute 之前不要打开连接。

    我假设 date_created 的类型是 Date

    包含参数的数据类型可以提高sql的效率。

    如果您在 Try/Catch 中所做的只是关闭连接,那么您只是在吞下错误。

    Private Sub OPCode()
        Dim datetoday = Date.Today
        Dim Command = "INSERT INTO assets_table ([date_created], [unit_type]) VALUES (@date_created , @unit_type);"
        Using myconn As New MySqlConnection("Your connection string"),
                cmd As New MySqlCommand(Command, myconn)
            cmd.Parameters.Add("@date_created", MySqlDbType.Date).Value = datetoday
            cmd.Parameters.Add("@unit_type", MySqlDbType.VarChar).Value = frm_viewAssets.lbl_fetch.Text
            myconn.Open()
            cmd.ExecuteNonQuery()
        End Using
    End Sub
    

    【讨论】:

      猜你喜欢
      • 2022-01-15
      • 1970-01-01
      • 1970-01-01
      • 2021-05-19
      • 1970-01-01
      • 1970-01-01
      • 2015-05-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多