1. 如何使用odbc連接資料庫
使用odbc連接資料庫的步驟如下:
1、首先安裝Mysql
odbc
connector
插件。配置32位ODBC數據源,選擇「控制面板」->"系統和安全"->"管理工具",如下圖所示:
2、雙擊ODBC數據源(32位),進入下面界面,如下圖所示:
3、切換至「系統DSN」選項卡,滾動並選擇MySQL
ODBC
5.3
Unicode
Driver,單擊完成,如下圖所示:
4、配置數據源與用戶名密碼,並選擇相應的資料庫(註:Data
Source
Name
需要自己命名,Database
需要選擇自己需要使用的資料庫),以下是配置好的數據源,如下圖所示:
5、打開SSDT,新建ODBC數據源,選擇剛剛建立的數據源,輸入用戶名和密碼(與設置數據源的時候的用戶名和密碼一致),如下圖所示:
2. 如何用ODBC訪問SQL資料庫
1.選擇「開始」→「管理工具」→「數據源(ODBC)」選項,顯示「ODBC數據源管理器」對話框。
2.切換到「系統DSN」選項卡,默認情況下計算機中沒有部署和任何資料庫的連接。
3.單擊「添加」按鈕,顯示「創建新數據源」對話框。在「選擇您想為其安裝數據源的驅動程序」列表中,選擇「SQL Server」選項。
4.單擊「完成」按鈕,啟動創建新數據源向導,顯示「創建到SQL Server的新數據源」對話框。在「名稱」文本框中,鍵入數據源的名稱,在「伺服器」列表中選擇目標SQL Server 2008資料庫伺服器,或者鍵入資料庫伺服器的名稱。
5.單擊「下一步」按鈕,顯示下圖對話框,設置資料庫的身份驗證方法。ODBC支持基於Windows NT模式的身份驗證和基於SQL Server的驗證模式。本例中選擇SQL Server驗證模式。在「登錄ID」文本框中,鍵入資料庫管理員的名稱,在「密碼」文本框鍵入資料庫管理員的密碼。
6.單擊「下一步」按鈕,顯示下圖所示的對話框。設置連接的目標SQL Server 2008資料庫伺服器後,默認連接的資料庫。默認沒有選擇任何資料庫,其他選項使用默認值即可。
7.單擊「下一步」設置連接到SQL Server 2008的資料庫參數,建議使用默認值。如果在部署SQL Server 2008的過程中,更改了默認的資料庫參數,建議在此對話框中設置和部署資料庫時使用相同的參數。
8.單擊「完成」按鈕,顯示創建ODBC數據源使用的參數。
9.單擊「測試數據源」按鈕,測試能夠連接到目標資料庫,如果成功顯示「SQL Server ODBC 數據源測試」對話框,在「測試結果」列表中會顯示「測試成功」信息。
10.單擊兩次「確定」按鈕,完成ODBC數據源的創建,創建成功的數據源。應用程序即可通過ODBC數據源連接到目標資料庫。
3. C++如何連接ODBC
#ifdef WIN32
#include <windows.h>
#include <odbcinst.h>
#include <sqlext.h>
#else
#include <mysql.h>
#include <unistd.h>
#define SQLHANDLE static MYSQL
#endif
#include <stdarg.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
SQLHANDLE hDBEnv, hDBC;
int DB_Open(char * dbcn, char * usr, char * pwd)
{
int r;
#ifdef WIN32
r = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &hDBEnv);
if(r) return 0;
r = SQLSetEnvAttr(hDBEnv,SQL_ATTR_ODBC_VERSION,
(void*)SQL_OV_ODBC3,0);
if(r) return 0;
r = SQLAllocHandle(SQL_HANDLE_DBC, hDBEnv, &hDBC);
if(r) return 0;
r = SQLConnect(hDBC,
(unsigned char *)dbcn, strlen(dbcn),
(unsigned char *)usr, strlen(usr),
(unsigned char *)pwd, strlen(pwd));
return r==SQL_SUCCESS || r==SQL_SUCCESS_WITH_INFO;
#else
mysql_init(&hDBC);
MYSQL * rx = mysql_real_connect(
&hDBC, dbcn, usr, pwd, NULL, 0, NULL, 0);
if(!rx) return 0;
return 1;
#endif
}//end DB_Open
int DB_Exec(char * sql)
{
#ifdef WIN32
SQLHANDLE hStatement = NULL;
SQLAllocHandle(SQL_HANDLE_STMT, hDBC, &hStatement);
SQLExecDirect(hStatement,(unsigned char *)sql, strlen(sql));
SQLCloseCursor(hStatement);
SQLFreeHandle(SQL_HANDLE_STMT, hStatement);
hStatement = NULL;
#else
mysql_real_query (&hDBC, sql, strlen(sql));
#endif
return 1;
}//end DB_Exec
int DB_Close(void)
{
#ifdef WIN32
SQLDisconnect(hDBC);
SQLFreeHandle(SQL_HANDLE_DBC, hDBC);
SQLFreeHandle(SQL_HANDLE_ENV, hDBEnv);
#else
mysql_close(&hDBC);
#endif
return 1;
}//DB_Close()
#ifndef WIN32
typedef struct tagMySQLRecordset {
MYSQL_RES * hRecord;
void * * row;
int * size;
int cols;
} MYSQLRecordset;
#endif
void DB_CleanQuery(void *hRecordset)
{
if(!hRecordset) return;
#ifdef WIN32
__try {
SQLCloseCursor(hRecordset);
SQLFreeHandle(SQL_HANDLE_STMT, hRecordset);
hRecordset = NULL;
}__finally{
return;
}//end try
#else
MYSQLRecordset * hRec = (MYSQLRecordset *) hRecordset;
mysql_free_result (hRec->hRecord);
free(hRec->row); hRec->row = NULL;
free(hRec->size); hRec->size = NULL;
free(hRec); hRec = NULL;
#endif
}//end DB_CleanQuery
int DB_Next(void * hRecordset)
{
int r=0; if(!hRecordset) return 0;
#ifdef WIN32
r = SQLFetch(hRecordset);
r = r == SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO;
if(!r) {
DB_CleanQuery(hRecordset);
}//end if
#else
MYSQLRecordset * hRec = (MYSQLRecordset *) hRecordset;
MYSQL_ROW row = mysql_fetch_row (hRec->hRecord);
if(row) {
for(int i=0; i<hRec->cols; i++) {
memcpy(hRec->row[i], row[i], hRec->size[i]);
}//next i
r = 1;
}else{
DB_CleanQuery(hRecordset);
r = 0;
}//end if
#endif
return r;
}//end DB_Next
int DB_params_count(const char * fmt)
{
int i=0, j=0;
while(fmt[i]) {
if(fmt[i]=='%') j++;
i++;
}//end while
return j;
}//end DB_params_count
void * DB_Query(char *sql, const char *fmt, ...)
{
int r=0;
int cols = DB_params_count(fmt);
if(cols<1) return NULL;
#ifdef WIN32
SQLHANDLE hStatement = NULL;
SQLAllocHandle(SQL_HANDLE_STMT, hDBC, &hStatement);
r = SQLExecDirect(hStatement,(unsigned char *)sql, strlen(sql));
r = r==SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO;
if(!r) {
return NULL;
}//end if
#else
r = mysql_real_query (&hDBC, sql, strlen(sql));
if(r) return NULL;
MYSQL_RES * rec = NULL;
rec = mysql_store_result (&hDBC);
if(!rec) return NULL;
MYSQLRecordset * hStatement
= (MYSQLRecordset *)malloc(sizeof(MYSQLRecordset));
if(!hStatement) return NULL;
memset(hStatement, 0, sizeof(MYSQLRecordset));
hStatement->hRecord = rec;
hStatement->cols = cols;
hStatement->row = (void **)malloc(cols * sizeof(void *));
memset(hStatement->row, 0, cols * sizeof(void *));
hStatement->size = (int *)malloc(cols * sizeof(int));
memset(hStatement->size, 0, cols * sizeof(int));
#endif
va_list ap; va_start(ap, fmt);
void * var; char buf[32];
int i=0,j=0,k=0,sz=0; char c=0;
int len = strlen(fmt); int bad=1;
#ifdef WIN32
int col=1;
#else
int col=0;
#endif
while(fmt[i]) {
c = fmt[i++];
if(c != '%') continue;
c = fmt[i++];
var = va_arg(ap, void *);
if(c == 'd') {
#ifdef WIN32
SQLBindCol(hStatement, col, SQL_C_SLONG, var, 4,NULL);
#else
hStatement->row[col] = var;
hStatement->size[col] = sizeof(long);
#endif
col++;
continue;
}//end if
if(c == 'f') {
#ifdef WIN32
SQLBindCol(hStatement, col, SQL_C_FLOAT, var, 4,NULL);
#else
hStatement->row[col] = var;
hStatement->size[col] = sizeof(float);
#endif
col++;
continue;
}//end if
memset(buf, 0, 32); bad=1;
for(j=i-1; j<len; j++) {
c = fmt[j];
if(c>='0' && c<='9') buf[j-i+1]=c;
if(c=='s') {bad=0; k=j+1; break;}
}//next j
if(bad) return NULL;
sscanf(buf, "%d", &sz);
#ifdef WIN32
SQLBindCol(hStatement, col, SQL_C_CHAR, var, sz, NULL);
#else
hStatement->row[col] = var;
hStatement->size[col] = sz;
#endif
col++;
i = k;
}//end while
va_end(ap);
return hStatement;
}//end DB_Rec
4. 我用VC程序建立ODBC方式資料庫連接,用CRecordSet關聯了兩個表,請問我這么向資料庫中插入數據。
CDatabase類用與和資料庫進行連接、斷開、插入...的操作。
CRecordSet類用與在資料庫中讀取數據。
你想向資料庫中插入數據,就用CDatabase類就可以了。
SQL語句你知道嗎?就是「insert into」什麼的。
例如:
CDatabase* m_Database;
//你已經和資料庫連接上了是嗎?沒有的話先連接上。
// m_Database->OpenEx(str, CDatabase::noOdbcDialog));
// str 是數據源。
//然後就向庫中插入數據吧!
CString strSQL;
strSQL.Format("//一條SQL語句,就是insert into");
m_Database->ExecuteSQL(strSQL);
//這樣就OK了。
5. 請問如何配置ODBC連接遠程的SQL Server資料庫
這好像不是你資料庫設置的問題,而是區域網的問題,你試試看,在控制面板>管理工具>本地安全策略,中啟動你和對方的guest帳號,網路訪問方式改為經典-本地訪問 ,在拒絕從網路訪問這台計計算機中刪除所有的,拒絕做為伺服器登陸中清空所有的,然後關閉windows防火牆,
區域網內winXP(professional)的訪問是個經常困擾大家的不大不小的問題,上次說我不夠詳細,你現在可以按以下的方法試一下,如果不成功,也可照此方法來解決區域網中經常出現的莫名奇妙的錯誤!!!我也是做DBMS的,出現的很多問題,貌似資料庫故障,其實不然!!
一、首先啟用guest來賓帳戶;
二、控制面板→管理工具→本地安全策略→本地策略→用戶權利指派里,「從網路訪問此計算機」中加入guest帳戶,而「拒絕從網路訪問這台計算機」中刪除guest帳戶;
三、我的電腦→工具→文件夾選項→查看→去掉「使用簡單文件共享(推薦)」前的勾;
四、設置共享文件夾;
五、控制面板→管理工具→本地安全策略→本地策略→安全選項里,把「網路訪問:本地帳戶的共享和安全模式」設為「僅來賓-本地用戶以來賓的身份驗證」(可選,此項設置可去除訪問時要求輸入密碼的對話框,也可視情況設為「經典-本地用戶以自己的身份驗證」);
六、右擊「我的電腦」→「屬性」→「計算機名」,該選項卡中有沒有出現你的區域網工作組名稱,如「work」等。然後單擊「網路 ID」按鈕,開始「網路標識向導」:單擊「下一步」,選擇「本機是商業網路的一部分,用它連接到其他工作著的計算機」;單擊「下一步」,選擇「公司使用沒有域的網路」;單擊「下一步」按鈕,然後輸入你的區域網的工作組名,如「work」,再次單擊「下一步」按鈕,最後單擊「完成」按鈕完成設置。
一般經過以上步驟,基本可以解決。如果不行,再往下看:
七、檢查本地連接是否被禁用,右擊「本地連接」→「啟用」;
八、關閉網路防火牆;
九、檢查是否啟用了域,是否加入了該域並檢查域設置;
十、檢查是否關閉了server服務;
十一、檢查本地連接IP、子網掩碼、網關及DNS設置是否有誤;
十二、「本地連接」→屬性→常規,檢查是否安裝了「Microsoft網路文件和列印機共享」、「Microsoft網路客戶端」以及TCP/IP協議;
十三、某些區域網游戲和軟體須安裝NetBEUI協議。而且網上有文章說,在小型區域網中,微軟在WinXP中只支持的TCP/IP協議和NWLink IPX/SPX/NetBIOS兼容協議表現不盡如人意,在小型區域網(擁有200台左右電腦的網路)中NetBEUI是佔用內存最少、速度最快的一種協議。
安裝方法:
①放入Windows XP安裝光碟,到「valueaddMsft et etbeui」目錄下將Netnbf.inf復制C:\Windows\INF中;
②將Nbf.sys復制到C:\Windows\System32\Drivers中;
③開始→控制面板→網上鄰居」→「網路連接」→「本地連接」(就是你目前使用中的區域網連接)上按右鍵→「屬性」→「常規」→「安裝」→「通訊協議」→→「添加」,此時就可以看到「NetBEUI Protocol」這一項(此項原來是沒有的),選取NetBEUI之後,按確定就OK了。
十四、作為網路瀏覽伺服器的電腦由於病毒、配置低運行慢以及死機等原因導致網路上的計算機列表得不到更新,使得某些機器有時候在網上鄰居中找不到。
解決辦法:最簡單的辦法是重啟各種網路設備和電腦,或者關閉個別有上述問題的電腦上的網路瀏覽伺服器功能,方法如下:
win2000/XP下禁用Computer Browser服務
十五、給系統打上補丁。WinXP訪問網上鄰居的速度較慢,這是WinXP的一個Bug,當我們打開網上鄰居時,操作系統首先會從計劃任務中進行查找,因此就大大影響了訪問的速度,除非您已經安裝了SP1補丁才不會存在這個問題。
可以手工解決這一問題。從注冊表中找到「\HKEY_LOCAL_MACHINE\
SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RemoteComputer\NameSpace」,這里有一個名為「{D6277990-4C6A-11CF-8D87-00AA0060F5BF}」的子鍵,該子鍵指向「計劃任務(Scheled Tasks)」,將它直接刪除即可。
十六、先卸載網卡驅動,重啟再重裝;
十七、硬體問題,檢查網卡、網線、集線器、路由器等,在檢查之前,最好先重啟一下網路設備(集線器、交換機、路由器)看能否解決;
十八、病毒(木馬)原因。升級病毒庫安全模式下全盤殺毒。
6. C++如何連接ODBC
private System.Data.SqlClient.SqlConnection getConnection(){
System.Data.SqlClient.SqlConnection conn=new System.Data.SqlClient.SqlConnection("server=.;uid=sa;pwd=8912737;database=ddd");
return conn;
}
public bool checkUser(string name,string pwd){
bool boo=false;
System.Data.SqlClient.SqlConnection conn=this.getConnection();
string sql=string.Format("select * from UserInfo where LoginName='{0}'",name);
System.Data.SqlClient.SqlDataAdapter adap=new System.Data.SqlClient.SqlDataAdapter(sql,conn);
System.Data.DataSet ds=new System.Data.DataSet();
adap.Fill(ds);
if(ds.Tables[0].Rows.Count!=0 && ds.Tables[0].Rows[0][2].Equals(pwd))
{
boo=true;
}
return boo;
}
private static string conn="server=.;database=資料庫名字;integrated security=sspi";
這就是連接資料庫的字元串
sqlconnection cn=new sqlconnection(conn);
sqlcommand cmd=new sqlcommand(sql語句,cn);
就ok了
也可以不用sqlcommand,用SqlDataAdapter
7. c語言程序通過ODBC連接Oracle資料庫
參考答案: 東飛伯勞西飛燕,黃姑織女時相見。
8. 如何使用odbc連接資料庫
首先安裝Mysql資料庫。
然後安裝MySQL ODBC 驅動
將要連接的MySQL資料庫文件夾復制到MySQL安裝文件夾的DATE目錄下,DATE下的文件名為資料庫名:
1、C:Program FilesMySQLMySQL Server 5.0data
2、C:ProgramDataMySQLMySQL Server 5.1data
根據您的系統可能不能,本人WIN7系統為上面第二個目錄,安裝完成後,我們下一步就創建ODBC數據源,步驟如下:
一、打開控制面板——管理工具——數據源(ODBC)——文件DSN如下圖:
然後系統會彈出下圖窗口,在Server:中填入本機地址:127.0.0.1, Port:3306(MySQL默認埠),User:填root(默認用戶名為小寫root),密碼填入安裝時輸入的密碼,database:選擇MySQL資料庫,完成按OK這樣數據源就創建成功!
然後打開Access--外部數據--導入ODBC資料庫—選擇導入新表或鏈接--然後選擇剛剛創建的數據源,也可以在這里新建數據源,方法和前面一樣。
然後輸入密碼,選擇資料庫按OK建立鏈接!
9. vc++中用odbc連接mysql資料庫運行時出錯
首先如果你用的是vc6的話:
1。按F5運行你的程序
2。在出錯時,選擇「重試」
3。按ALT+7調出「調用棧」窗口
4。雙擊從上往下的最近一個自己定義的函數,系統會自動把該函數所在的文件顯示出來,此時程序就暫停在游標處。一般來說錯誤就出在這附近,你可以通過查看變數的值來確認 。
10. ODBC 連接資料庫
學編程千萬別用數據源,下面是純SDK寫法。看一下終身受益
首先應該導入:#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","rsEOF")
具體操作如下:
CoInitialize(NULL);
_ConnectionPtr pConn(__uuidof(Connection));
pConn.CreateInstance("ADODB.connection");
CString conn="Provider=microsoft.jet.oledb.4.0;data source=txl.mdb"
if(FAILED(pConn->Open((_bstr_t)conn,"","",-1)))
{
AfxMessageBox("連接失敗");
return;
}
pConn->Close();
pConn.Release();
CoUninitialize();