當前位置:首頁 » 操作系統 » 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();

熱點內容
linuxusbgadget 發布:2024-04-26 02:52:54 瀏覽:303
我的世界空島世界伺服器地址 發布:2024-04-26 01:39:08 瀏覽:248
尼爾機械紀元加密 發布:2024-04-26 01:37:11 瀏覽:867
在控制台輸出sql語句 發布:2024-04-26 01:08:12 瀏覽:432
動畫java 發布:2024-04-26 01:02:40 瀏覽:12
得力文件夾5302 發布:2024-04-26 00:21:32 瀏覽:91
您的個人文件夾 發布:2024-04-26 00:03:12 瀏覽:68
睿雲伺服器功能介紹 發布:2024-04-25 23:59:51 瀏覽:571
標致5008怎麼連接安卓 發布:2024-04-25 23:25:08 瀏覽:794
安卓下載管理器哪個好 發布:2024-04-25 23:22:48 瀏覽:442