当前位置:首页 » 操作系统 » ado数据库查询

ado数据库查询

发布时间: 2022-08-18 07:50:03

Ⅰ ADO查询数据库时怎么分页展示数据

其实方法有很多,但主要有两种:
一、将数据库中所有符合查询条件的记录一次性的都读入 recordset 中,存放在内存中,然后通过 ADO Recordset 对象所提供的几个专门支持分页处理的属性: PageSize( 页大小 )、 PageCount( 页数目 ) 以及 AbsolutePage( 绝对页 ) 来管理分页处理。
二、根据客户的指示,每次分别从符合查询条件的记录中将规定数目的记录数读取出来并显示。
两者的主要差别在于前者是一次性将所有记录都读入内存然后再根据指示来依次做判断分析从而达到分页显示的效果,而后者是先根据指示做出判断并将规定数目的符合查询条件的记录读入内存,从而直接达到分页显示的功能。
我们可以很明显的感觉到,当数据库中的记录数达到上万或更多时,第一种方法的执行效率将明显低于第二种方法,因为当每一个客户查询页面时都要将所有符合条件的记录存放在服务器内存中,然后在进行分页等处理,如果同时有超过 100 个的客户在线查询,那么 ASP 应用程序的执行效率将大受影响。但是,当服务器上数据库的记录数以及同时在线的人数并不是很多时,两者在执行效率上是相差无几的,此时一般就采用第一种方法,因为第一种方法的 ASP 程序编写相对第二种方法要简单明了得多。

在这里作者就以我们常见的 ASP BBS 程序为例,来给大家分析一下如何在 BBS 程序里实现分页显示功能,由于我们一般使用的 BBS 程序的数据库记录数和同时访问的人数都不会太多,所以以下程序实例是使用的先前所介绍的第一种分页显示方法。

进行 ADO 存取数据库时的分页显示,其实就是对 Recordset 的记录进行操作。所以我们首先必须了解 Reordset 对象的属性和方法:
BOF 属性:目前指标指到 RecordSet 的第一笔。
EOF 属性:目前指标指到 RecordSet 的最后一笔。
Move 方法:移动指标到 RecordSet 中的某一条记录。
AbsolutePage 属性:设定当前记录的位置是位于哪一页 AbsolutePosition 属性:目前指标在 RecordSet 中的位置。
PageCount 属性:显示 Recordset 对象包括多少“页”的数据。
PageSize 属性:显示 Recordset 对象每一页显示的记录数。
RecordCount 属性:显示 Recordset 对象记录的总数。

Ⅱ ADO.NET操作数据库sql模糊查询

在用@定义变量标准方法like @keyword然后在创建参数时:new SqlParameter("@keyword",keyword+"%")你上面写的那个'@keyword%'这个是错的首先@变量不能用单引号或者双引号括起来,这样就变字符串了而不是变量然后是那个%,这个要写在你创建参数赋值的那个地方的,不然那个是无效的假如没有单引号 而是@keyword%的话,这样你在执行时它生成的代码是'keyword变量的值'%这样是无法得到你想要的数据的,那个%在单引号的范围之外

Ⅲ vb中怎样把ADO所连接的数据库中的内容查询出来并在DATAGRID中显示出来

'给你代码参考:
'比如说你要查询资料栏位"姓名"等于text1.text就显示在DataGrid

ADODC1.ConnectionString = "provider=Microsoft.jet.OLEDB.4.0;Persist security info= False; Data source=" & App.Path & "\数据库名称.mdb"

ADODC1.CommandType = adCmdText
ADODC1.RecordSource = “select * from 资料表名称 where 姓名 = '" & Text1.Text & "'"
ADODC1.Refresh

'设置DataGrid显示资料表里的资料
Set DataGrid1.DataSource =ADODC1
DataGrid1.Refresh

Ⅳ vb6如何用ado跨数据库查询多个xls的数据

你既然单个ado可以操作数据库,那对于操作多个数据源,应该可以使用多个不同的ado对象分别操作不同的数据源,从而进行所谓的跨数据源操作的呀?
提示:ado1操作数据库1,ado2操作数据库2,然后所谓跨数据库,无非就是在使用数据前的对象指明ado1或ado2就可以了呀!

Ⅳ delphi 如何用ADO进行多线程查询数据库

我刚做了一个在线程中使用ado的系统,实现方式如下:使用dm来存放
connection
,在各个线程中create
adoquery控件,connection属性设为dm中的connection,在使用完之后别忘了free。另外别忘了同步。好运!

Ⅵ vb中用ado怎么实现数据库的查找功能代码

工程->引用Microsoft ActiveX Data Objects 2.x Library
'工程->引用Microsoft ADO Ext. 2.x for DDL and Security
'在窗体上有1个DataGrid、6个CommandButton、3个TextBox

Option Explicit
Public mCnnString As String
Dim mRst As New ADODB.Recordset

Private Sub Command1_Click() '1.在数据库mdb1上创建 "ID" "用户名" "密码" 字段的UserPassWord表
Dim mTbl As New Table
Dim mIdx As New ADOX.Index
Dim mCat As New ADOX.Catalog

' 打开目录。
mCat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb" & ";Persist Security Info=False"

' 定义表并将其追加到库中
mTbl.Name = "UserPassWord"
mTbl.ParentCatalog = mCat
mTbl.Columns.Append "ID", adVarWChar
mTbl.Columns.Append "用户名", adVarWChar
mTbl.Columns.Append "密码", adVarWChar
mCat.Tables.Append mTbl

' 定义多列索引
mIdx.Name = "MultiColIdx"
mIdx.Columns.Append "ID"

' 将索引追加到表上
mTbl.Indexes.Append mIdx
End Sub

Private Sub Command2_Click() '2.添加 "01" "小明" "999999" 到相应字段中的数据库文件中
Dim mCon As New ADODB.Connection
mCon.CursorLocation = adUseClient
mCon.Open mCnnString
mCon.Execute "Insert Into UserPassWord Values('" & "01'," & " '" & "小明" & "'," & " '999999" & "')"
mCon.Close
Set mCon = Nothing
End Sub

Private Sub Command3_Click() '3.删除指定ID(Text1.Text)整行的数据行
Dim mCon As New ADODB.Connection
mCon.CursorLocation = adUseClient
mCon.Open mCnnString
mCon.Execute "Delete From UserPassWord Where ID = '" & Trim(Text1.Text) & "'"
mCon.Close
Set mCon = Nothing
End Sub

Private Sub Command4_Click() '4.根据用ID(Text2.Text)查询数据库
If mRst.State = adStateOpen Then mRst.Close
mRst.CursorLocation = adUseClient
mRst.Open "Select * From UserPassWord Where ID = '" & Trim(Text2.Text) & "'", mCnnString, adOpenStatic, adLockOptimistic, adCmdText
Set DataGrid1.DataSource = mRst
End Sub

Private Sub Command5_Click() '4.根据用户名(Text3.Text)查询数据库
If mRst.State = adStateOpen Then mRst.Close
mRst.CursorLocation = adUseClient
mRst.Open "Select * From UserPassWord Where 用户名 = '" & Trim(Text3.Text) & "'", mCnnString, adOpenStatic, adLockOptimistic, adCmdText
Set DataGrid1.DataSource = mRst
End Sub

Private Sub Command6_Click() '5.清空数据表,保留字段
Dim mCon As New ADODB.Connection
mCon.CursorLocation = adUseClient
mCon.Open mCnnString
mCon.Execute "Delete From UserPassWord Where True"
mCon.Close
Set mCon = Nothing
End Sub

Private Sub Form_Load()
mCnnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb" & ";Persist Security Info=False" '连接字符串
End Sub

Private Sub Form_Unload(Cancel As Integer) '退出时候释放mRst对象
If mRst.State = adStateOpen Then
mRst.Close
Set mRst = Nothing
End If
End Sub

Ⅶ VB中ADO对数据库的查询

这个Text5是干什么用的?不明白你想在Text2显示啥结果,
如是要在Text2显示“售价”,Text2.Text=nsjg 不就得了。

========================================================
首先你确认数据库中有没有“售价”这个字段,如果有,那你应该加个判断返回有没有数据记录,如:

If KeyAscii = 13 Then
strsql = "select 售价 from 商品管理 where 代码='" & dmtm & "'"
Set rs = getrs(strsql)
If rs.RecordCount > 0 Then
num = rs(0)
If Len(dmtm) = 0 Then
MsgBox " 请输入商品代码或条形码! ", vbOKOnly, "提示"
ElseIf num <> 1 Then
MsgBox " 对不起,商品库存中没有对应的商品! ", vbOKOnly, "提示"
Else
nsjg = rs("售价").Value
Text5.SetFocus
End If
End If
If rs.State = adStateOpen Then rs.Close: Set rs = Nothing
End If

Ⅷ ADO.NET数据库查询

关于Sql注入的基本概念经典的注入语句是' or 1=1--
单引号而截断字符串,“or 1=1”的永真式的出现使得表的一些信息被暴露出来,如果sql语句是select * from 的话,可能你整个表的信息都会被读取到,更严重的是,如果恶意使用都使用drop命令,那么可能你的整个数据库得全线崩溃。

当然,现在重点不是讲sql注入的害处,而是说说如何最大限度的避免注入问题。

sql注入的存在在最大危害,是sql的执行语句没有和控制语句分开,我们想要select一些东西,但用户可能拼出' or 1=1甚至再加上delete/update/drop,后来是属于控制语句了,所以要避免sql的注入,就必须把查询语句与控制语句分开。

SqlParameter给我们提供了一个很好的类,有了它,我们可以不现拼接字符串,也可以不再担心单引号带来的惨剧,因为,这一切会有人来为我们完成的。

简单的给个示例

传统的查询语句的sql可能为
string sql="select * from users where user_id='"+Request.QueryString["uid"]+"'";
很显然,我们在这里拼接了字符串,这就给sql注入留下了可乘之机。

现在,我们要改写这样的语句,使用SqlParameter来做

SqlCommand SqlCmd = new SqlCommand(sql, SqlConn);
SqlParameter _userid = new SqlParameter("uid", SqlDbType.Int);
_userid.Value = Request.QueryString["u_id"];
SqlCmd.Parameters.Add(_userid);

这样,我们可以保证外接参数能被正确的转换,单引号这些危险的字符也会转义了,不会再对库造成威胁。

当然,这仅是一个示例而已,在真实的情况下,可能你还要对 Request.QueryString["u_id"]进行必要的检测与分析,这样才安全

所以,使用参数化的sql语句,是一种很好的做法,不过,我们也还有更好的办法,那就是使用参数化的存储过程,如果你有兴趣,可以继续探讨。
----转载

Ⅸ 怎么用ADO查询数据库里有几个表

CString m_strConnect;
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
CStringList* m_pStrList;

m_strConnect = "Provider=SQLOLEDB.1;Server=127.0.0.1;Database=student/*student为数据库名*/;uid=sa;pwd=123456/*123456为数据库密码*/";
m_pConnection.CreateInstance(__uuidof( Connection ));
m_pConnection->Open((LPCSTR)m_strConnect,"","",adModeUnknown);
m_pRecordset.CreateInstance(__uuidof(Recordset));
CString strSelect("select Name from sysobjects where xtype='u' and status>=0");
m_pRecordset->CursorType = adOpenStatic;
m_pRecordset->CursorLocation = adUseClient;
m_pRecordset->CacheSize = 1000L;
m_pRecordset->Open((LPCTSTR)strSelect, m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
LONG lCount = m_pRecordset->GetRecordCount();

lCount就是用户表的个数了,你也可以用记录集指针m_pRecordset遍历取得表名

Ⅹ Ado.net将数据库查询结果转成一个动态对象

步骤如下:一、用有源ODBCDSN的方法和无源OLEDB的方法连接数据库:1、无源OLEDB:stringstrConn="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=intels.mdb";2、有源ODBCDSN:stringstrConn="DataSource=intels";如果采用ADO.NET连接SQLServer或者Oracle,方法和VB中连接相应数据的连接字符串一致。
二、开始连接数据库:ADOConnectionConn=newADOConnection(strConn);三、执行一个selectSQL查询:stringstrSQL="Selectidfromtest";ADOCommandADOCmd=newADOCommand(conn,Conn);Conn.Open();ADODataReaderreader;ADOCmd.Execute(outreader);四、得到ADODataReader中包含的数据:先执行:reader.Read();然后就可以取得数值:reader["id"].ToString();依次类推。五、delete(删除)语句,insert和update相同:strSQL="deletefromtestwhereid=’1’";//strSQL="insertintotestvalues(’1’)";//strSQL="updatetestsetid=’1’";ADOCommandADOCmd=newADOCommand(conn,Conn);Conn.Open();ADOCmd.Execute();

热点内容
数字php 发布:2024-05-06 01:53:10 浏览:742
编程中怎么 发布:2024-05-06 01:43:32 浏览:628
如何访问远程数据库 发布:2024-05-06 01:39:20 浏览:447
刷算法的网站 发布:2024-05-06 01:30:39 浏览:269
少儿编程徐州 发布:2024-05-06 01:20:42 浏览:462
sqlserver连接驱动 发布:2024-05-06 00:33:34 浏览:646
存储开销 发布:2024-05-06 00:13:38 浏览:954
服务器怎么盈利 发布:2024-05-05 23:56:16 浏览:942
java网站培训学校 发布:2024-05-05 23:43:11 浏览:41
淘宝搜索算法 发布:2024-05-05 23:37:07 浏览:999