CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  VB.NET

ado如何通过外部传入参数进行查询?

楼主ysmstoneman(迪蜚)2002-11-29 14:42:16 在 .NET技术 / VB.NET 提问

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

相关问题

  • ado如何通过外部传入参数进行查询?
  • ADO参数查询?
  • ado如何通过外部传入参数进行查询?-------要求用VB实现
  • ADO的参数化查询(关键字:ADO 参数化查询 , _ParameterPtr,
  • ADO记录查询时的参数传递???
  • ADO Access数据库 参数 模糊查询
  • JBuilder中参数化查询
  • 参数查询的问题
  • 参数查询问题
  • 如何在javascript中传入参数

关键词

  • .net
  • 查询
  • 代码
  • 数据库
  • 执行
  • vb
  • adocmd
  • empid
  • adocn
  • 参数

得分解答快速导航

  • 帖主:ysmstoneman
  • TheAres
  • Montaque

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo