兩種方法:
創(chuàng)新互聯(lián)致力于互聯(lián)網(wǎng)品牌建設與網(wǎng)絡營銷,包括網(wǎng)站設計、成都網(wǎng)站設計、SEO優(yōu)化、網(wǎng)絡推廣、整站優(yōu)化營銷策劃推廣、電子商務、移動互聯(lián)網(wǎng)營銷等。創(chuàng)新互聯(lián)為不同類型的客戶提供良好的互聯(lián)網(wǎng)應用定制及解決方案,創(chuàng)新互聯(lián)核心團隊10年專注互聯(lián)網(wǎng)開發(fā),積累了豐富的網(wǎng)站經(jīng)驗,為廣大企業(yè)客戶提供一站式企業(yè)網(wǎng)站建設服務,在網(wǎng)站建設行業(yè)內(nèi)樹立了良好口碑。
方法一:在C中 調(diào)用system函數(shù),執(zhí)行mysql命令。
方法二:在C中,調(diào)用mysql的API ,也就是使用mysql接口庫, 訪問數(shù)據(jù)庫。
后者更通用一些。
1、配置ODBC數(shù)據(jù)源。
2、使用SQL函數(shù)進行連接。
對于1、配置數(shù)據(jù)源,配置完以后就可以編程操作數(shù)據(jù)庫了。
對于2、使用SQL函數(shù)進行連接,參考代碼如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#includewindows.h
#includesql.h
#includesqlext.h
void
main()
{
HENV
henv;
//環(huán)境句柄
HDBC
hdbc;
//數(shù)據(jù)源句柄
HSTMT
hstmt;
//執(zhí)行語句句柄
unsigned
char
datasource[]="數(shù)據(jù)源名稱";
//即源中設置的源名稱
unsigned
char
user[]=
"用戶名";
//數(shù)據(jù)庫的帳戶名
unsigned
char
pwd[]=
"密碼";
//數(shù)據(jù)庫的密碼
unsigned
char
search[]="select
xm
from
stu
where
xh=0";
SQLRETURN
retcode;
//記錄各SQL函數(shù)的返回情況
//
分配環(huán)境句柄
retcode=
SQLAllocEnv(henv);
//
等介于
SQLAllocHandle(SQL_HANDLE_ENV,
SQL_NULL
,
henv);
//
設置ODBC環(huán)境版本號為3.0
retcode=
SQLSetEnvAttr(henv,
SQL_ATTR_ODBC_VERSION,
(void*)SQL_OV_ODBC3,
0);
//
分配連接句柄
retcode=
SQLAllocConnect(henv,hdbc);
//
等介于
SQLAllocHandle(SQL_HANDLE_DBC,
henv,
hdbc);
//設置連接屬性,登錄超時為*rgbValue秒(可以沒有)
//
SQLSetConnectAttr(hdbc,
SQL_LOGIN_TIMEOUT,
(SQLPOINTER)(rgbValue),
0);
//直接連接數(shù)據(jù)源
//
如果是windows身份驗證,第二、三參數(shù)可以是
mysql是有c語言接口的,安裝相應庫后就可以鏈接了,一般連接mysql的函數(shù)是mysql_connect或者mysql_real_connect(大概就是這么拼的吧。。。)可以使用mysql_query執(zhí)行sql語句
1、用CAPI連接MySQL數(shù)據(jù)庫有兩個步驟:
1)初始化一個連接句柄
2)建立連接
所用到的函數(shù)如下:
MYSQL *mysql_init(MYSQL *connection); // 初始化連接句柄
//成功返回MySQL結構指針,失敗返回NULL
MYSQL *mysql_real_connect(MYSQL *connection,
const char *server_host,
const char *sql_user_name,
const char *sql_password,
const char *db_name,
unsigned int port_number,
const char *unix_socket_name,
unsigned int flags); //建立連接
//成功返回MySQL結構指針,失敗返回NULL
以下是完整實例:
#include iostream
#include fstream
#include cstdlib
#include mysql/mysql.h
using namespace std;
void mysql_err_function(MYSQL * connection);
int main()
{
//freopen("input.txt","r",stdin);
MYSQL * connection;
connection = mysql_init(NULL);
if (!connection)
{
cout "mysql_init failed!" endl;
exit(-1);
}
if (!mysql_real_connect(connection,"localhost","root","123456","test",0,NULL,0))
{
cout "Connection To MySQL failed!" endl;
mysql_err_function(connection);
}
cout "Connection To MySQL Server is Success..." endl;
string str;
getline(cin,str);
int res = 0;
int affected_count = 0;
while (str != "close" str != "" !res)
{
res = mysql_query(connection,str.c_str());
affected_count += mysql_affected_rows(connection);
if (res)
{
if (mysql_errno(connection))
{
cout "Error " mysql_errno(connection) " : "
mysql_error(connection) '\n' endl;
break;
}
}
getline(cin,str);
}
cout "Have affected " affected_count " rows!" endl;
mysql_close(connection);
cout "Connection To MySQL Server is closed..." endl;
return 0;
}
void mysql_err_function(MYSQL * connection)
{
if (mysql_errno(connection))
{
cout "Error " mysql_errno(connection) " : "
mysql_error(connection) endl;
exit(-1);
}
}