0

我对以下代码有疑问:

dim nama as string    
cnn.ConnectionString = "Server=localhost; user id=root; password=; database=aplikasi_store_testing;"
        cmd.Connection = cnn
        cnn.Open()
        cmd.CommandText = "SELECT ID_Barang, Nama_Barang from data_barang WHERE ID_Barang= '" & txtIDBarangInput.Text & "';"

之后,我需要将数据从“Nama_Barang”更改为 nama。谁能帮我解决这个问题?在此先感谢您的宝贵帮助!

4

2 回答 2

3

可能你需要执行你的命令

dim nama as string    
cnn.ConnectionString = "............"
cmd.Connection = cnn
cnn.Open()
cmd.CommandText = "SELECT ID_Barang, Nama_Barang from data_barang WHERE ID_Barang= @id"
cmd.Parameters.AddWithValue("@id", txtIDBarangInput.Text )
Dim reader  = cmd.ExecuteReader()
while reader.Read()
   nama = reader(1).ToString()
End While

当然,这段代码假定您已经声明了连接和命令对象。
另请注意,我已删除您的字符串连接并放置了一个参数占位符。
当您构建要传递给数据库引擎的字符串时,这是正确的做法。
阅读有关此主题的信息(Sql 注入

顺便说一句,选择回ID_Barang你已经知道的值是没有用的。
另外,在这个领域,我有一个疑问。在您的问题代码中,您将值放在单引号之间,将值视为字符串。但名称ID_Barang暗示了一个数值。您确定此字段是文本吗?

于 2013-04-30T14:37:44.447 回答
0
cmd.CommandText = "SELECT Nama_Barang from data_barang WHERE ID_Barang = '" & txtIDBarangInput.Text & "';"

Dim o As Object = cmd.ExecuteScalar()

If (Not o.Equals(DBNull.Value)) Then
    nama = DirectCast(o, string)
Else
    name = string.Empty
End If

您应该使用参数而不是直接将 id 值插入到查询字符串中,以避免 sql 注入漏洞等。

于 2013-04-30T14:37:01.997 回答