Command Text属性尚未正确初始化

时间:2017-07-19 14:45:31

标签: mysql sql vb.net

我在Insert语句中尝试添加图片时遇到问题。消息

  

Command Text属性尚未正确初始化

出现。我试着寻找解决方案,但我仍然不知道如何解决它。

以下是代码:

{{1}}

2 个答案:

答案 0 :(得分:0)

您正在致电

dbcomm.ExecuteNonQuery()

以任何方式设置查询之前。您的insert语句仅作为此时名为query的字符串变量的内容提供。

不清楚代码示例中变量dbcomm的来源。

答案 1 :(得分:0)

您在设置命令文本之前调用了dbcomm.ExecuteNonQuery()(在dbcomm = New MySqlCommand(query, dbconn)

行上发生了

INSERT查询不应该是ExecuteReader()ed - 看起来你已经尝试了几种方法来使它工作,试验和错误,现在还有旧的垃圾代码......

以下是正确顺序的代码:

警告未来的访客:请勿复制或重新使用此代码。这是一种特别糟糕的数据库访问方式。 后来在这篇文章中,我请求OP转储并重新使用正确的数据库访问库。

    dbconn.Open()
    Dim query As String
    query = "INSERT INTO `player`(`ID`, `First_Name`, `Last_Name`, `Gender`, `Date_of_Birth`, `Civil_Status`, `Nationality`, `Address`, `Status', `Picture`) VALUES('" + TextBox7.Text + "','" + TextBox1.Text + "','" + TextBox2.Text + "','" + TextBox9.Text + "','" + TextBox3.Text + "','" + TextBox4.Text + "','" + TextBox5.Text + "','" + TextBox6.Text + "','" + TextBox8.Text + "', @Pic)"
    dbcomm = New MySqlCommand(query, dbconn)
    dbcomm.Parameters.AddWithValue("@Pic", Content)
    dbcomm.ExecuteNonQuery()
    dbconn.Close()

所有这些都应该在Try Catch中,尽管将dbConn.Close()放在Finally中是个好主意。您可能希望在关闭之前检查连接状态(如果它无法打开,抛出异常) - 您不希望调用失败

顺便说一下,请考虑抛弃所有这些代码并使用对象关系映射器,如nHibernate,Entity Framework,Datasets 等。在这个时代(即过去10年)没有人应该编写低级数据库代码来打开/关闭连接并通过在业务逻辑代码中填充SQL字符串来插入数据。现在所有这些都由框架处理,知道应用程序中的对象,并管理数据你的数据库。编写自己的数据库代码并不是很酷,因为没有人再编写汇编语言或其他低级别的guff了。它打开应用程序以解决巨大的安全问题,并导致难以维护和开发的低质量代码

附录:正如Bugs在下面指出的那样,(以及为什么我建议你把所有这些都交给专门用于数据访问的库)这个SQL编写的方式真的很糟糕,并且是一个巨大的安全性风险即可。在任何一个文本框中放置一个精心放置的撇号,然后是一些特制的SQL和攻击者可以清除整个数据库,转储其内容等等。