【问题标题】:Dynamic call to a database from web application从 Web 应用程序动态调用数据库
【发布时间】:2012-05-16 06:54:28
【问题描述】:

我希望根据用户输入进行数据库调用。我正在使用的线路是:

general_read.CommandText = "SELECT * FROM general WHERE Business_Name = '" & business_name & "';"

business_name 是从以下位置动态加载的:

Protected Sub btnLoad_Click(sender As Object, e As System.EventArgs) Handles btnLoad.Click
    business_name = txtName.Text

    dbConnect()
    dbGet()
    dbDisconnect()
End Sub

显示的错误是:

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

我假设它与在进行数据库调用之前未设置的变量有关,但我不完全确定。

【问题讨论】:

  • business_name 是否在全球范围内声明?
  • 您可以通过单步执行代码来判断。 “general_read.CommandText = ...”是否失败
  • 是的,business_name 是全局声明的。问题是我只使用了CommandText,并没有自己设置连接字符串。

标签: vb.net visual-studio database-connection


【解决方案1】:

我猜它失败了

general_read.CommandText = "SELECT * FROM general WHERE Business_Name = '" & business_name & "';"

因为这是您指定的代码。如果是这种情况,那么您没有正确初始化 SQLCommand 对象。下面是 MSDN 页面,它正确地向您展示了如何为对象使用所有重载的构造函数。

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.aspx

如果 business_name 为空,当您尝试连接 ComamndText 字符串时也会引发异常。在该行上放一个断点,看看什么是空的。这就是你的问题所在。

希望这会有所帮助。如果该行没有出错,请在出错的地方包含代码。

【讨论】:

  • 是的,我忘了创建命令本身,我只是做了命令文本。
  • 我讨厌那些看起来一切正常但你错过了一些东西的错误。很高兴这有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多