我正在尝试从SQL数据库中获取结果并将其保留为变量。但是使用我的代码(见下文)它返回 0(零)。任何想法我做错了什么?
谢谢
Function getName(name As String)
Dim SQLconnect As New SQLite.SQLiteConnection()
Dim SQLcommand As SQLite.SQLiteCommand
SQLconnect.ConnectionString = "Data Source=C:toolsnames.sqlite;"
SQLconnect.Open()
SQLcommand = SQLconnect.CreateCommand
SQLcommand.CommandText = "SELECT * FROM names WHERE name = " & name & " LIMIT 1;"
Dim sqlResponse As String = SQLcommand.ExecuteNonQuery()
End Function
编辑:我正在使用"返回sqlResponse"进行返回
首先,sql 应该是(我认为):
SQLcommand.CommandText = "SELECT * FROM names WHERE name = '" & name & "' LIMIT 1;"
我不确定文本在SQLite中是如何表示的,但是您需要某种分隔符,例如SQL Server中的单引号。
第二件事,使用参数化查询来阻止自己被SQL注入
劫持第三,SELECT 使用 ExecuteReader,如果您只需要一个项目,请尝试 ExecuteScalar。执行非查询用于插入、更新删除。
执行NonQuery
不返回值,因此它将始终0
。您需要使用
Dim sqlResponse As String = SQLcommand.ExecuteScalar()