如何添加外卡?

时间:2012-07-12 14:04:25

标签: asp.net vb.net tsql

您好我是新程序员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

提前感谢您的帮助,如果之前有人问过,我真的很抱歉。

2 个答案:

答案 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