ado如何通过外部传入参数进行查询?
SQL语句:
select * from tbEmp
where EmpID=:d_ID;
sqlStr="select * from tbEmp where EmpID=:d_ID"
RecordSet.Open SqlStr,,,
问题:
我想通过一个文本框输入EmpID的值进行查询,该如何将文本框的值传给d_ID这个参数呢?
Delphi的解决方法:
adoQuery.sql.add('select * from tbEmp where EmpID=:d_ID');
adoQuery.sql.paramaters.asstring('d_ID'):=Edit.text;
就OK了,但在VB里面怎样才可以实现呢?
各位大虾,这个问题是有点菜,我刚从Delphi转到VB,所以…………
先行谢过!!!!
问题点数:100、回复次数:17Top
1 楼kuailexq2000()回复于 2002-11-29 20:16:12 得分 0
sqlStr="select * from tbEmp where EmpID=" & textbox1.text.tostring
textbox1.text.tostring="d_id"
Top
2 楼Montaque(每天回答两个问题)回复于 2002-11-30 09:50:13 得分 0
.NET的Command对象也有类似delphi的paramater集合,用法差不多。Top
3 楼ysmstoneman(迪蜚)回复于 2002-11-30 14:53:06 得分 0
To kuailexq2000() :这种方法不是我想要的结果,如果实在不行就只有用这种笨方法了:)
To Montaque(Rainman) :
能不能说得详细点,最好给出代码,谢谢!!!Top
4 楼ysmstoneman(迪蜚)回复于 2002-11-30 15:04:38 得分 0
难道这么简单的问题也没有人懂吗?是不是嫌分不够?
再加50大洋。Top
5 楼QQRN(笨QQ-馊主意提供者)回复于 2002-11-30 15:18:13 得分 0
用paramater集合Top
6 楼Donmi(逍遥浪子)回复于 2002-11-30 23:20:27 得分 0
sqlStr="select * from tbEmp where EmpID=?"
每个?对应一个参数。Top
7 楼TheAres(班门斧)回复于 2002-11-30 23:44:19 得分 50
参考下面的代码片断:
(数据库是是Northwind)
Dim strConn, strSQL As String
strConn = "Data Source=(local);Initial Catalog=Northwind;" & _
"Trusted_Connection=Yes;"
strSQL = "SELECT OrderID, CustomerID, OrderDate FROM Orders " & _
"WHERE CustomerID = @CustomerID"
Dim cn As New SqlConnection(strConn)
Dim cmd As New SqlCommand(strSQL, cn)
Dim param As SqlParameter
param = cmd.Parameters.Add("@CustomerID", SqlDbType.NChar, 5)
param.Value = "ALFKI"
cn.Open()
Dim rdr As SqlDataReader = cmd.ExecuteReader()
Do While rdr.Read()
Console.WriteLine("OrderID = " & rdr.GetInt32(0))
Console.WriteLine("CustomerID = " & rdr.GetString(1))
Console.WriteLine("OrderDate = " & rdr.GetDateTime(2))
Console.WriteLine()
Loop
rdr.Close()
cn.Close()
Top
8 楼dragon2002(天下之大,连我站的地方都没有)回复于 2002-12-01 09:53:21 得分 0
sqlStr="select * from tbEmp where EmpID='"&TextBox1.text&"'"
可以先把sqlstr用response.write 出来,
然后copy到查询分析器里看正确与否Top
9 楼ysmstoneman(迪蜚)回复于 2002-12-04 21:15:21 得分 0
To TheAres(班门斧) :
在VB.net这种方法应该是行得通的,但我用的是VB6,而且是用ADO连接的Oracle数据库,我找遍ADO参考,就是没发现一个与Delphi实现完全相似的方法,你的方法简直就是把delphi的实现方法翻译过来,很好!!!!只可惜…………
能不能用ADO也“翻译”一下?拜托了!
To dragon2002(哈哈) :
这种方法不是与kuailexq2000() 说的一样吗?
我在一本Oracle的参考资料上看到
select * from tbEmp where EmpID=:d_ID
和
select * from tbEmp where EmpID=’123‘
虽然是同样的查询,但在执行效率上却大不一样,前者是把查询放到共享池中,每次查询数据库只需找到":d_ID",而不必从头去执行整条SQL语句,而后者却每次都得从Select开始执行,不可避免遍历整个表,小数据量也许比较不出来,但是在海量数据的情况下,就很明显了。
Top
10 楼TheAres(班门斧)回复于 2002-12-05 01:26:57 得分 0
手头没有ADO的环境了,所以代码没有试验.大体格式如下.(不好意思)
cmd.ActiveConnection = AdoCN
cmd.commandtext="select * from myTable where id1=? and id2=?"
cmd.CommandType = adCmdText
cmd.Parameters.Append cmd.CreateParameter("OfficeId1", adIUnknown, adParamInput)
cmd.Parameters.Append cmd.CreateParameter("OfficeId2", adIUnknown, adParamInput)
cmd("Id1").Value = "1001" //这句错误,提示类型不对,请问该如何写
cmd("Id1").Value = "1002"Top
11 楼Montaque(每天回答两个问题)回复于 2002-12-05 08:52:30 得分 50
Dim adocn As New adodb.Connection
adocn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Program Files\Microsoft Visual Studio\VB98\NWIND.MDB;Persist Security Info=False"
Dim adocmd As New adodb.Command
adocmd.ActiveConnection = adocn
Dim adors As New adodb.Recordset
Dim strSQL As String
strSQL = "Select * from Employees where EmployeeID=@EmployeeID"
adocmd.CommandText = strSQL
adocmd.CreateParameter ("@employeeID")
adocmd.Parameters(0).Value = 1
Set adors = adocmd.Execute
MsgBox adors(0).ValueTop
12 楼ysmstoneman(迪蜚)回复于 2002-12-06 17:35:57 得分 0
非常感谢TheAres(班门斧) 和Montaque(Rainman) ,很好,程序逻辑是完全正确了,可惜在这个地方
adocmd.CreateParameter ("@employeeID")
adocmd.Parameters(0).Value = 1
和
cmd("Id1").Value = "1001" //这句错误,提示类型不对,请问该如何写
cmd("Id1").Value = "1002"
就是运行不通过,根据出错提示来看,我确定还是参数未能传进去,以致Oracle辨认不出SQL语句。
对了,再声明一下,我用的是Oracle数据库。Top
13 楼jb2008(飞天.net)回复于 2002-12-06 17:43:55 得分 0
sqlStr="select * from tbEmp where EmpID="+this.TextBox1.Text
// or produrceTop
14 楼smilejiangjun(smile将军)回复于 2002-12-06 17:44:21 得分 0
upTop
15 楼ysmstoneman(迪蜚)回复于 2002-12-08 10:01:55 得分 0
To jb2008(飞天.net):
请再看清楚问题,你说的我已经这样用了,只是感觉不妥,才提这个问题的。
不是说这里有M$的技术顾问吗?不问也应该来光顾一下嘛!!!!!Top
16 楼ysmstoneman(迪蜚)回复于 2002-12-09 21:06:21 得分 0
我要找M$的技术顾问!!!!!Top
17 楼ysmstoneman(迪蜚)回复于 2002-12-16 11:05:08 得分 0
没有其他答案了吗?结账Top




