您好我是新程序员asp.net和vb.net。我想用外卡来搜索引擎。 我很疑惑把外卡(%)。
Protected Sub search()
Dim ds As New DataSet
Dim cls As New Class1
ds = cls.returndataset("select * from student where Nama_Depan like '" & nama.Text & "' ")
viewatt.DataSource = ds
viewatt.DataBind()
End Sub
提前感谢您的帮助,如果之前有人问过,我真的很抱歉。
答案 0 :(得分:2)
正如其他人已经指出的那样
select * from student where Nama_Depan like '%" & nama.Text & "%'
是使用通配符的正确方法
以下是有关SQL通配符的W3Schools教程的链接:http://www.w3schools.com/sql/sql_wildcards.asp 我建议你快速阅读,W3schools的文章通常都很好。
然而,这是从您的代码执行SQL命令的一种非常糟糕的方式,有人可以很容易地将一些SQL代码注入到您的文本框中,并且当您的查询被执行时,它可能会破坏您的数据库。
如果有人在您的文本框中输入了'; DROP TABLE * --
,那么这将允许您的第一个查询运行,然后它会删除所有表格。
使用参数化查询或存储过程很容易解决这个问题。我个人赞成使用Stored Procedured,你可以这样做。
CREATE PROCEDURE MyProc
(
@param1 VARCHAR(50)
)
AS
BEGIN
select * from student where Nama_Depan like '%"'+@param1+'%'
END
然后,您只需要编辑VB代码来调用存储过程,而不是执行SQL命令。
使用存储过程的另一个好处是它们执行速度稍快且效率更高,这是因为当您将一些SQL传递给数据库时,必须将其编译为sql命令才能执行,存储过程已经存储在数据库上,所以不需要这样做。
使用存储过程而不仅仅是传输SQL语句还有一些额外的安全性好处。如果有人在通过网络/互联网的途中拦截您的SQL语句,他们可以获得对数据库结构的一些了解。使用存储过程,它们可能拦截的是过程名称和一些参数。
答案 1 :(得分:0)
试试这个。
Protected Sub search()
Dim ds As New DataSet
Dim cls As New Class1
ds = cls.returndataset("select * from student where Nama_Depan like '%" & nama.Text & "%' ")
viewatt.DataSource = ds
viewatt.DataBind()
End Sub