odbcsql語句
A. odbc連接excel通過什麼sql語句可以獲取該excel中的所有表名
1.進入WIN7系統後,點擊開始菜單,單擊控制面板打開窗口。
B. ADO的sql語句和ODBC的有什麼區別
ODBC和ADO區別、
ODBC(Open DataBase Connection)開放式系統互連,是一種資料庫訪問協議,提供了訪問資料庫的API介面。基於ODBC的應用程序,對資料庫操作不依賴於具體的DBMS,不直接與DBMS打交道,槐鍵所有資料庫操作由對應DBMS的ODBC驅動程序完成,即:系統中不需要安裝DBMS系統,如SQL SERVER 2005,但必須有SQL SERVER 2005的ODBC驅動程序,然後在ODBC管理器中注冊數據源後,就可以在應用程序中通過ODBC API訪問該資料庫。
ODBC資料庫訪問技術只適用於windows系統,因為需要在ODBC驅動程序管理器中進行數據源注冊,而只有windows才集成了ODBC驅動程序管理器(「控制面板/管理工具/數據源」)。
ADO(ActiveX Data Object)具有跨系統平台特性,它直接對DBMS資料庫進行操作,即系
統中必須有DBMS,但不需要驅動程序,不需要注冊數據源,所以具有很好的可移植性。
VC++6中這兩種技術所涉及到的MFC類:
MFC ODBC類包括CDatabase類 CRecordSet類 CRecoreView類 CFieldExchange類 CDBException類,具體說明請詳見任何一本講述資料庫編程技術的參考書。
ADO是data object,即數據對象的意思,先看一些它包括哪些常用對象:
Command對象 Connection對象 Error對象 RecordSet對象 Field對象 Parameter對象,對應到MFC ADO類,主要有_ConnectionPtr _RecordsetPtr等類。
基於ODBC和ADO的VC++應用程序設計概述
習慣上建立基於文檔視圖的應用程序時,使用ODBC訪問方法,創建應用程序時,需要在step 2 of 6 what database support would you like to include中選擇"database view with file support"載入你要訪問的資料庫,如果在此選擇None,後期編程槐螞載入資料庫相當麻煩,請注意。鉛明巧(如果一個資料庫中有多個表,可在此選擇一個表進行類定義,默認類名為"工程名+Set",可在應用程序創建完成前最後一步進行改名;然後在編程時建立其他基於CRecordSet的資料庫表類)
如果在step 2中設置訪問的資料庫和表,則在生成的應用程序框架的XXSet類中會自動載入對資料庫和表的連接訪問操作,當然你最好重新進行定義;系統只有在必要時才會調用GetDefaultConnection和GetDefaultSQL返回預設的資料庫連接定義和SQL語句。
當然也可以建立基於對話框的資料庫訪問應用程序,思路差不多,請讀者自行參悟。
習慣上當建立基於對話框的應用程序時,選擇使用ADO技術。對於小程序,在StdAfx.h中引入ADO動態連接庫,在C***APP中應初始化COM庫環境,創建和關閉ADO連接。對於大型項目,通過自定義的ADOConnection類封裝資料庫操作的各種介面。
C. VC++中用ODBC執行ExecuteSQL函數,若SQL語句中含有漢字就執行失敗
因為雙位元組的問題。
SQL語句,使用widechar類型的。
D. 在VC6中,使用ODBC的SQL語句操作資料庫時,如何提交和回滾事務
BEGIN
TRAN
為開始事務
COMMIT
TRAN
為提交事務
ROLLBACK
TRAN
為回滾事務
BeginTrans
啟動新的事務,之後任何改變不會立即提交
CommitTrans
保存所有更改並結束當前事務。它也可以啟動新事務。
RollbackTrans
取消當前事務中所做的任何更改並結束事務。它也可以啟動新事務。
E. 如何使用ODBC鏈接表/如何鏈接SQL Server中的表
--在Access查詢中,如何用SQL訪問SQL Server中的陸亂表?多種方式:1、用鏈接表。2、用傳遞查詢。3、直接在本地查詢串中指定連接信息即可,如下:select*fromOrdersin[ODBC][ODBC;Driver=SQL Server;Server=.;Uid=sa;Pwd=0;database=Northwind]INSERTINTO目標庫表名 (欄位列表)INODBC[ODBC;Driver=SQL Server;Server=伺服器名或IP;Uid=sa;Pwd=密碼;database=資料庫名]SELECT欄位列表fromAccess本地表
傳遞查詢和鏈接表,兩者工作原理不同:1、傳遞查詢:將需要查詢到本地的數據的SQL語句寫在傳遞查詢中,執行後,只返回符合查詢條件的數據棚悉碼。2、鏈哪鏈接表:打開鏈接表時,返回所連接SQL Server表的全部數據。
要導入表中的數據,需要先創建DSN。--控制面板--管理工具--數據源 (ODBC)--選擇文件DSN頁--添加--選擇最後一行:SQL Server--指定數據源名稱,只要好記即可--指定要連接的伺服器名或IP,本機可以用.--選擇SQL Server混合驗證,輸入用戶和密碼--更改默認資料庫為你要連接的資料庫--完成--然後在你的MDB中創建鏈接表時,選此數據源即可。
使用鏈接表時,建議使用文件數據源創建鏈接表,與機器無關,拷貝到別的機器上可以直接使用,無須再手工或用代碼創建ODBC。
三種數據源比較:文件DSNODBC文件數據源允許用戶連接到數據提供程序。文件DSN可以由安裝了相同驅動程序的用戶共享。
F. 使用connection對象對SQL Server資料庫創建ODBC連接的語句是什麼
如何利用connection對象連接數據源?
用一個connnection 對象,只要指定一個connection字元串,目的是用來指定你想要聯結的數據源,然後調用open方法來建立鏈接。
通過connection string提供的信息用OPEN方法可以非常輕松的建立與數據的連接。如果你決定用connection對象進行工作,那麼你可以用它的STATE屬性。如果connection對象被打開了那麼它的返回值為adstateopen,如果不是它的返回值為adstateclosed.下面的例子是利用odbc建立與SQL的連接。
Sub ConnectionExample1()
Dim cnn As ADODB.Connection
Set cnn = New ADODB.Connection
' 用ODBC打開連接.
cnn.Open "Pubs", "sa", ""
' 檢查是否完成連接
If cnn.State = adStateOpen Then
MsgBox "Welcome to Pubs!"
Else
MsgBox "Sorry. No Pubs today."
End If
關閉connection對象
cnn.Close
End Sub
如果你只需要連接一個數據源。下面的代碼要比上面的簡單。作為選擇,你可以創建一個connection對象,在調用open方法前你可以先設置ConnectionString屬性。這種方法容許你連接一個數據源後再重新用這個對象再連接另一個數據源。
Sub ConnectionExample2()
Dim cnn As ADODB.Connection
Set cnn = New ADODB.Connection
' 用ODBC DSN 建立連接
cnn.ConnectionString = "DSN=Pubs;UID=sa;PWD=;"
cnn.Open
' 檢查是否與數據源建立了連接.
If cnn.State = adStateOpen Then
MsgBox "Welcome to Pubs!"
Else
MsgBox "Sorry. No Pubs today."
End If
'關閉connection對象
cnn.Close
End Sub
在你對CONNECTION對象建立連接前,你可以設置它的其它屬性。例如,你可以設置連接超時。
Sub ConnectionExample3()
Dim cnn As ADODB.Connection
Set cnn = New ADODB.Connection
' 設置CONNECTION屬性
cnn.ConnectionString = "DSN=Pubs;UID=sa;PWD=;"
cnn.ConnectionTimeout = 30
' 打開connection 對象
cnn.Open
' 檢查是否已經連接上數據源
If cnn.State = adStateOpen Then
MsgBox "Welcome to Pubs!"
Else
MsgBox "Sorry. No Pubs today."
End If
' 關閉connection對象
cnn.Close
End Sub
ConnectionString屬性的語法結構假定數據源已經被建畝宴立或利用系統管理員的身份使用ODBC.不依靠存在的odbc數據源變得流行起來。這樣就減輕了安裝的負擔。下面褲耐轎的例子是一個連接SQL SERVER的可選擇性的方法,僅依靠本身存在的odbc driver
. Sub ConnectionExample4()
Dim cnn As ADODB.Connection
Set cnn = New ADODB.Connection
'利用引用ODBC DRIVER打開CONNECTION對象
cnn.ConnectionString = "driver={SQL Server};" & _
"server=rgreennt;uid=sa;pwd=;database=pubs"
cnn.Open
' Find out if the attempt to connect worked.
'檢查是否已經建立連胡肆接
If cnn.State = adStateOpen Then
MsgBox "Welcome to Pubs!"
Else
MsgBox "Sorry. No Pubs today."
End If
' 關閉CONNECTION對象
cnn.Close
End Sub
現在ODBC DRIVER 有更廣的變化,你可以用ADO和數據源對話。不久將會有更的的OLE DB提供者與數據源建立連接。The Microsoft® OLE DB Provider for ODBC是當前ADO默認的提供者。你能用不同的提供者設置CONNECTION對象的provider屬性。
Sub ConnectionExample5()
Dim cnn As ADODB.Connection
Set cnn = New ADODB.Connection
'設置PROVIDER屬性利用OLE DB Provider for ODBC
cnn.Provider = "MSDASQL"
'用ODBC DSN打開CONNECTION對象
cnn.ConnectionString = "driver={SQL Server};" & _
"server=rgreennt;uid=sa;pwd=;database=pubs"
cnn.Open
'檢查是否連接上數據源
If cnn.State = adStateOpen Then
MsgBox "Welcome to Pubs!"
Else
MsgBox "Sorry. No Pubs today."
End If
'關閉CONNECTION對象
cnn.Close
End Sub
上面的代碼設置PROVIDER屬性不是必須因為ADO的默認提供者就是OLE DB PROVIDER FOR ODBC.這里只是認你知道當你用其它的OLE DB PROVIDERS時如何設置。
我如何用CONNECTION對象執行COMMAND?
CONNNETION的EXECUTE方法用來發送一個COMMAND(一個SQL指令或其它的文本信息)到數據源。如果在SQL指令中要求返回幾行記錄集,一個RECORDSET對象將會被自動的建立。
Sub ConnectionExample6()
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cnn = New ADODB.Connection
' 引用 ODBC driver 建立連接.
cnn.ConnectionString = "driver={SQL Server};" & _
"server=rgreennt;uid=sa;pwd=;database=pubs"
cnn.Open
' 執行SQL 語句創立一個RECORDSET對象.
Set rs = cnn.Execute("Select * From authors")
' 顯示第一個 author.
MsgBox rs("au_fname") & " " & rs("au_lname")
' 斷開連接
rs.Close
End Sub
記住用EXECUTE返回的RECORDSET是只讀的,並且是僅向前游標。如果你需要用RECORDSET物件的更多函數,你首先要創建RECORDSET物件並設置想要設置的屬性然後用OPEN方法打開它來執行查詢和返回想要得到的游標類型.
在下面的例子中,COMMAND物件執行刪除指令,由於沒有數據集需要返回,你不需要額外的用RECORDSET物件.刪除了多少行數據?你可以通過RECORDSAFFECTED參數知道它.
Sub ConnectionExample7()
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cnn = New ADODB.Connection
'引用ODBC DRIVER建立連接
cnn.ConnectionString = "driver={SQL Server};" & _
"server=rgreennt;uid=sa;pwd=;database=pubs"
cnn.Open
'向數據源發送刪除指令
cnn.Execute ("Delete From authors Where au_id = '011-01-0111'")
' 檢查有多少行數據被刪除
Set rs = cnn.Execute("Select @@rowcount")
' 顯示第一個欄位
MsgBox rs(0) & " rows deleted"
'關閉連接
rs.Close
End Sub
下面的例子,這個COMMAND通過指定的存儲過程的名字運行數據源的存儲過程.由於需要返回數據,所以你必需建立RECORDSET物件。
Sub ConnectionExample8()
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cnn = New ADODB.Connection
' 引用ODBC DRIVER來建立連接
cnn.ConnectionString = "driver={SQL Server};" & _
"server=rgreennt;uid=sa;pwd=;database=pubs"
cnn.Open
' 建立RECORDSET對象來運行存儲過程
Set rs = cnn.Execute("Exec byroyalty 50")
' 通過循環來顯示AUTHOR的ID
Do While Not rs.EOF
MsgBox rs("au_id")
rs.MoveNext
Loop
' 斷開連接
rs.Close
End Sub
G. 創建SQL資料庫;建立ODBC數據源
一、創建資料庫
1.打開SQL
Server在「對象資源管理器」的「資料庫」節點右鍵「新建資料庫」假設資料庫名為「Date」
2.在彈出的「新建資料庫」中填寫資料庫名等信息假設資料庫名為「Date」
3.「確定」完成
二、建立ODBC數據源
1.「開始」→「設置」→「控制面板」→「管理工具」→「數據源
(ODBC)」→「系統DSN」→「添加」→「SQL
Server(最後一個)」→「您想連接哪個SQL
Server(填入「.」即可)」→「下一步」→「下一步」→「更改默認的資料庫為(Date)」→「完成」
H. php通過odbc用sql語句查詢時無法查詢中文,應該怎麼轉碼
咱們以MYSQL為例吧。
MYSQL資料庫存在著編碼問題,主要體現在資料庫里漢字會出現亂碼,WEB頁面漢字顯示不正常。
歸結起來只有一個原因:會出現編碼的地方存在編碼不一致。
WEB開發中:MYSQL編碼主要會出現在五個地方:
1. mysql安裝的默認編碼(latin1)-在mysql.ini(mysql安裝根目錄下)中設置。[mysqld]選項,默認沒有。添加即在最後一行加入default-character-set=utf8。
2.mysql資料庫的編碼,原則上默認的編碼是mysql安裝的默認編碼,也可以在建庫時用語句來執行:create databasedbname default character set utf8;我這里是建立一個utf8編碼的dbname資料庫。
3.mysql數據表的編碼,原則上默認是第二步建立的資料庫的編碼。提倡不要在creat table時加上編碼
4.利用程序建立mysql連接時,連接字元串使用的編碼。如jdbc,php mysql_connect(),這個地方必須是與你頁面的編碼一致。
5.WEB程序頁面的編碼,charset=utf8;與4必須一致。
除上面5個地方外,另有一個不是編碼者所能控制的,那就是瀏覽用戶的瀏覽器的編碼,一般是自動選擇,就不列入了。
上述五個地方,我所知道的保證不出現亂碼的方法是:
1 無所謂,但是如果可以調整的話,可以設置成你所需要統一的一個編碼,如utf8
2,3比較重要,我所理解的必須是一致。建議是在建庫語句時帶上編碼,建表時就不指定編碼了。
4是必須的,php下:$link = mysql_connect('localhost', 'root', '') or die('Could not connect: ' . mysql_error());
echo 'Connected successfully';
mysql_select_db('wordpress') or die('Could not select database');
mysql_query("set names utf8;"); //這句
如利用PDO的話 $dbh = new PDO($dsn, $config['db']['username'], $config['db']['password']);
$dbh->exec('SET CHARACTER SET utf8'); //這句
5在WEB頁面中必須設置成上面的統一的編碼。
請不要結束,繼續往下看:上述方法中必須統一是統一的編碼,我使用的是utf8,為什麼使用utf8是我正要說的。
I. VC 通過 MFC ODBC 訪問資料庫時如何直接執行SQL語句
環境:WindowsXP ; VC++6.0 + sp5 1。通過odbc直接執行SQL語句CDatabase mydb; CRecordset myRecord; CString strSQL; CDBVariant cv;try{if ( !mydb.IsOpen() ) mydb.OpenEx("資料庫連接字元串",CDatabase::noOdbcDialog); myRecord.m_pDatabase = &mydb; //直接執行SQL語句, //注意,SQL語句字元串一定不能以空格開始 strSQL = "SELECT 欄位或計算列 FROM 表 WHERE 條件"; //strSQL = " SELECT 欄位或計算列 FROM 表 WHERE 條件 "; //這樣不行,會報錯,查詢語句中沒有欄位 myRecord.Open(CRecordset::snapshot,"需要執行的SQL語句"); int i = 0; while ( !myRecord.IsEOF() ){myRecord.MoveFirst(); myRecord.GetFieldValue(i,cv); //獲得第(i+1)列的數據,數據保存在CDBVariant變數中,不可以直接使用數字0 myRecord.MoveNext();} myRecord.Close(); mydb.Close(); }上文中的 myRecord.GetFieldValue(i,cv); 語句也可以使用下面的方式實現。 myRecord.GetFieldValue(i,strTemp);體驗新版博客上一篇: 小寶運鋒褲旁簡貝四個月了下一篇:寶寶拉肚基派子了
J. JDBC-ODBC的SQL語句
獲得一個statements對象:
statements stat=Connection.createstatements()
通過statements對象執行SQL語句:
stat.executeQuery(String sql)返回查詢的結果集。
stat.executeUpdate(String sql)返回值為int型,表示影響記錄的條數。
要通過JDBC來存取某一特定的資料庫,必須有相應的JDBC driver,它往往是由生產資料庫的廠家提供,是連接JDBC API與具體資料庫之間的橋梁。
通常,Java程序首先使用JDBC API來與JDBC Driver Manager交互,由JDBC Driver Manager載入指定的JDBC drivers, 以後就可以通過JDBC API來存取資料庫。
ODBC(Open Database Connectivity,開放資料庫互連)是微軟公司開放服務結構(WOSA,Windows Open Services Architecture)中有關資料庫的一個組成部分,它建立了一組規范,並提供了一組對資料庫訪問的標准API(應用程序編程介面)。這些API利用SQL來完成其大部分任務。ODBC本身也提供了對SQL語言的支持,用戶可以直接將SQL語句送給ODBC。
一個基於ODBC的應用程序對資料庫的操作不依賴任何DBMS,不直接與DBMS打交道,所有的資料庫操作由對應的DBMS的ODBC驅動程序完成。也就是說,不論是FoxPro、Access還是Oracle資料庫,均可用ODBC API進行訪問。由此可見,ODBC的最大優點是能以統一的方式處理所有的資料庫。
一個完整的ODBC由下列幾個部件組成:
應用程序(Application)。
ODBC管理器(Administrator)。該程序位於Windows 95控制面板(Control Panel)的32位ODBC內,其主要任務是管理安裝的ODBC驅動程序和管理數據源。
驅動程序管理器(Driver Manager)。驅動程序管理器包含在ODBC32.DLL中,對用戶是透明的。其任務是管理ODBC驅動程序,是ODBC中最重要的部件。