这里是备份,原文请看我的网站: [习题]多重字段搜寻 -- DataSet/DataAdapter + SelectCommand参数 (使用参数配合 DataAdapter)
http://www.dotblogs.com.tw/mis2000lab/archive/2010/10/13/gridview_rowcreated_rowdatabound.aspx
本文的补充范例,可以放在ASP.NET 4.0 专题实务(松岗出版)
「上集」光盘里面的 第20章「网站内部的小搜寻引擎」,当作补充教材。
这个范例,在「下集」的光盘里面也有提供。
我做成 PDF档案,您可以下载全文。
===========================================================================
ASP.NET案例精编——适用于VS 2005/2008(配光盘)书本里面, Ch. 20-3-3小节,我们使用 DataSet / DataAdapter来作。
本范例多了「SelectCommand 参数」的功能而已。
HTML画面都一模一样,您可以参考书本范例「Search_Engine_2_Manual.aspx」。
里面的观念与原理,书本上都有讲解。
( PDF 全文下载,请看 [文章下载]网站内的搜寻引擎,单一字段与多重字段的搜寻(自己手写SqlDataSource与SelectParameter参数))
比较特别的是:
当我们使用参数的时候,SQL指令的写法略有修改。
这段我是参考 SqlDataSource精灵产生的SQL指令,才找到错误。
不然我也试了很久的时间
'---- 自己写的(宣告)NameSpace ----
Imports System.Web.Configuration
Imports System.Data
Imports System.Data.SqlClient
'== 其余的事件在此省略,请参阅书本。
'== 以下 有两种写法,请您任选其一即可。
Sub DBInit()
'----连结数据库的另一种写法----
Dim Conn As SqlConnection = New
SqlConnection(WebConfigurationManager.ConnectionStrings("您在 Web.Config档案里面的数据库连结字符串").ConnectionString)
Try
' Conn.Open() '---- 这一行批注掉,可以不用写,DataAdapter会自动开启
'==
SQL指令的写法很特别!!
Dim mySearchString
As String = "Select id,test_time,title,summary,author From
test Where 1=1 "
If TextBox1.Text
<> "" Then
mySearchString = mySearchString & " and ([title]
LIKE '%' + @title + '%')"
End If
If TextBox2.Text
<> "" Then
mySearchString = mySearchString & " and ([summary]
LIKE '%' + @summary + '%')"
End If
'=======================================================
'== 参考数据:http://msdn.microsoft.com/zh-tw/library/bbw6zyha(v=vs.80).aspx
'==
方法一 (任选其一即可)==(start)
'Dim myAdapter As New SqlDataAdapter() '--务必先有 DataAdapter才行!
'Dim selectCMD
As New SqlCommand(mySearchString,
Conn)
'myAdapter.SelectCommand
= selectCMD
'If TextBox1.Text <> "" Then
' selectCMD.Parameters.Add("@title",
SqlDbType.VarChar, 120)
' selectCMD.Parameters("@title").Value
= TextBox1.Text
'End If
'If TextBox2.Text <> "" Then
' selectCMD.Parameters.Add("@summary",
SqlDbType.VarChar, 200)
' selectCMD.Parameters("@summary").Value
= TextBox2.Text
'End If
'=======================================================(方法一 end)
'=======================================================(start)
'== 方法二 (任选其一即可) ==(start)
Dim myAdapter As SqlDataAdapter = New SqlDataAdapter(mySearchString, Conn)
If TextBox1.Text <> "" Then
myAdapter.SelectCommand.Parameters.Add("@title",
SqlDbType.VarChar, 120)
myAdapter.SelectCommand.Parameters("@title").Value
= TextBox1.Text
End If
If TextBox2.Text <> "" Then
myAdapter.SelectCommand.Parameters.Add("@summary",
SqlDbType.VarChar, 200)
myAdapter.SelectCommand.Parameters("@summary").Value
= TextBox2.Text
End If
'=======================================================(方法二 end)
Dim ds
As New DataSet()
myAdapter.Fill(ds,
"test") '//执行SQL指令。把数据库捞出来的数据,填入DataSet里面。
' DataSet是由许多 DataTable组成的,我们目前只放进一个名为 test的 DataTable而已。
GridView1.DataSource
= ds.Tables("test")
GridView1.DataBind()
Catch ex As Exception
Response.Write("<HR/>"
& ex.ToString() & "<HR/>")
End Try
' 使用SqlDataAdapter的时候,不需要写程序去控制Conn.Open()与 Conn.Close()。
End Sub
关于 DataSet / DataAdapter 的范例,您可以参考这些文章。
如此一来, CRUD各种参数的写法,您都会了。
[习题]ADO.NET #6, DataSet如何新增一笔纪录?(搭配参数InsertCommand + Parameter)
http://www.dotblogs.com.tw/mis2000lab/archive/2008/12/15/ado.net_dataset_insertcommand_1215.aspx
[转贴][ADO.NET] DataSet / DataAdapter 参数(Parameters)的各种范例
http://www.dotblogs.com.tw/mis2000lab/archive/2011/03/24/dataadapter_parameter_20110324.aspx
关于 DataSet / DataAdapter的 UpdateCommand 与 DeleteCommand「参数」作法,
可以参考「上集」(ASP.NET 4.0 专题实务 / 松岗出版)第十章。
....................................................................................................寄信给我 mis2000lab (at)雅虎.com.台湾 ........
ASP.NET案例精编(清华大学出版社 / 作者MIS2000Lab)
http://www.china-pub.com/46063
2009/5/15上市
市场价 :¥59.80 RMB(人民幣)

【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步