當前位置:首頁 » 操作系統 » c連接mysql資料庫代碼

c連接mysql資料庫代碼

發布時間: 2022-04-19 04:44:17

⑴ c++代碼 連接mysql資料庫 怎麼連接啊

您好,代碼如下,希望能幫到您。還有,如果覺得俺答案還可以的話,請記得採納答案。。

//下面的代碼是一個實現C++連接MYSQL資料庫的很好的例子
//這里用了建表,插入,檢索,刪表等常用功能
//我用VC++6.0生成,已經成功連接了。
//在VC++6.0中要想把做一下兩步准備工作才可以。
//其實就是將頭文件和庫文件包含進來
#include <winsock.h>
#include <iostream>
#include <string>
#include <mysql.h>
using namespace std;
#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "libmysql.lib")
//單步執行,不想單步執行就注釋掉
#define STEPBYSTEP
int main() {
cout << "****************************************" << endl;
#ifdef STEPBYSTEP

system("pause");
#endif

//必備的一個數據結

MYSQL mydata;
//初始化資料庫

if (0 == mysql_library_init(0, NULL, NULL)) {
cout << "mysql_library_init() succeed" << endl;
} else {

cout << "mysql_library_init() failed" << endl;

return -1;

}

#ifdef STEPBYSTEP
system("pause");
#endif
//初始化數據結構
if (NULL != mysql_init(&mydata)) {
cout << "mysql_init() succeed" << endl;
} else {
cout << "mysql_init() failed" << endl;
return -1;
}

#ifdef STEPBYSTEP
system("pause");

#endif
//在連接資料庫之前,設置額外的連接選項

//可以設置的選項很多,這里設置字元集,否則無法處理中文

if (0 == mysql_options(&mydata, MYSQL_SET_CHARSET_NAME, "gbk")) {

cout << "mysql_options() succeed" << endl;
} else {

cout << "mysql_options() failed" << endl;

return -1;

}
#ifdef STEPBYSTEP

system("pause");

#endif

//連接數據
if (NULL != mysql_real_connect(&mydata, "localhost", "root", "test", "test", 3306, NULL, 0))

//這里的地址,用戶名,密碼,埠可以根據自己本地的情況更改

{

cout << "mysql_real_connect() succeed" << endl;
} else {
cout << "mysql_real_connect() failed" << endl;

return -1;

}

#ifdef STEPBYSTEP

system("pause");
#endif

//sql字元串

string sqlstr;

//創建一個表
sqlstr = "CREATE TABLE IF NOT EXISTS user_info";

sqlstr += "(";
sqlstr += "user_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'Unique User ID',";
sqlstr += "user_name VARCHAR(100) CHARACTER SET gb2312 COLLATE gb2312_chinese_ci NULL COMMENT 'Name Of User',";

sqlstr += "user_second_sum INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'The Summation Of Using Time'";

sqlstr += ");";

if (0 == mysql_query(&mydata, sqlstr.c_str())) {

cout << "mysql_query() create table succeed" << endl;

} else {

cout << "mysql_query() create table failed" << endl;

mysql_close(&mydata);

return -1;

}

#ifdef STEPBYSTEP

system("pause");

#endif

//向表中插入數據
sqlstr = "INSERT INTO user_info(user_name) VALUES('公司名稱'),('一級部門'),('二級部門'),('開發小組'),('姓名');";

if (0 == mysql_query(&mydata, sqlstr.c_str())) {

cout << "mysql_query() insert data succeed" << endl;

} else {

cout << "mysql_query() insert data failed" << endl;

mysql_close(&mydata);

return -1;
}
#ifdef STEPBYSTEP

system("pause");
#endif

//顯示剛才插入的數據

sqlstr = "SELECT user_id,user_name,user_second_sum FROM user_info";

MYSQL_RES *result = NULL;
if (0 == mysql_query(&mydata, sqlstr.c_str())) {
cout << "mysql_query() select data succeed" << endl;

//一次性取得數據集

result = mysql_store_result(&mydata);

//取得並列印行數

int rowcount = mysql_num_rows(result);

cout << "row count: " << rowcount << endl;
//取得並列印各欄位的名稱

unsigned int fieldcount = mysql_num_fields(result);
MYSQL_FIELD *field = NULL;

for (unsigned int i = 0; i < fieldcount; i++) {
field = mysql_fetch_field_direct(result, i);
cout << field->name << "\t\t";

}

cout << endl;
//列印各行
MYSQL_ROW row = NULL;
row = mysql_fetch_row(result);
while (NULL != row) {
for (int i = 0; i < fieldcount; i++) {
cout << row[i] << "\t\t";
}
cout << endl;
row = mysql_fetch_row(result);
}
} else {
cout << "mysql_query() select data failed" << endl;

mysql_close(&mydata);
return -1;
}
#ifdef STEPBYSTEP
system("pause");
#endif
//刪除剛才建的表
sqlstr = "DROP TABLE user_info";
if (0 == mysql_query(&mydata, sqlstr.c_str())) {
cout << "mysql_query() drop table succeed" << endl;
} else {
cout << "mysql_query() drop table failed" << endl;
mysql_close(&mydata);
return -1;
}
mysql_free_result(result);
mysql_close(&mydata);
mysql_server_end();
system("pause");

return 0;
}

⑵ 用c語言如何對MySQL資料庫進行操作

里的大部分代碼參考了MySQL發行包裡面的.c源文件,大家也可以去裡面找找相關的代碼,下面這段代碼實現了連接到本地MySQL伺服器上9tmd_bbs_utf8資料庫,從數據表tbb_user中根據輸入的userid取得該用戶的用戶名並列印輸出到終端。
if defined(_WIN32) || defined(_WIN64)為了支持windows平台上的編譯
#include <windows.h> #endif #include <stdio.h> #include <stdlib.h> #include "mysql.h"

我的機器上該文件在/usr/local/include/mysql下
定義MySQL資料庫操作的宏,也可以不定義留著後面直接寫進代碼
define SELECT_QUERY "select username from tbb_user where userid = %d" int main(int argc, char **argv)char **argv 相當於 char *argv[] {

MYSQL mysql,*sock;定義資料庫連接的句柄,它被用於幾乎所有的MySQL函數
MYSQL_RES *res;查詢結果集,結構類型
MYSQL_FIELD *fd ;包含欄位信息的結構
MYSQL_ROW row ;存放一行查詢結果的字元串數組
char qbuf[160];存放查詢sql語句字元串
if (argc != 2) { //檢查輸入參數 fprintf(stderr,"usage : mysql_select <userid>\n\n"); exit(1); } mysql_init(&mysql); if (!(sock = mysql_real_connect(&mysql,"localhost","dbuser","dbpwd","9tmd_bbs_utf8",0,NULL,0))) { fprintf(stderr,"Couldn't connect to engine!\n%s\n\n",mysql_error(&mysql)); perror(""); exit(1); } sprintf(qbuf,SELECT_QUERY,atoi(argv[1])); if(mysql_query(sock,qbuf)) { fprintf(stderr,"Query failed (%s)\n",mysql_error(sock)); exit(1); } if (!(res=mysql_store_result(sock))) { fprintf(stderr,"Couldn't get result from %s\n", mysql_error(sock)); exit(1); } printf("number of fields returned: %d\n",mysql_num_fields(res)); while (row = mysql_fetch_row(res)) { printf("Ther userid #%d 's username is: %s\n", atoi(argv[1]),(((row[0]==NULL)&&(!strlen(row[0]))) ? "NULL" : row[0])) ; puts( "query ok !\n" ) ; } mysql_free_result(res); mysql_close(sock); exit(0); return 0;

為了兼容大部分的編譯器加入此行
}
編譯的時候,使用下面的命令
gcc -o mysql_select ./mysql_select.c -I/usr/local/include/mysql -L/usr/local/lib/mysql -lmysqlclient (-lz) (-lm) 後面兩個選項可選,根據您的環境情況運行的時候,執行下面的命令
./mysql_select 1
將返回如下結果:
number of fields returned: 1 Ther userid #1 's username is: Michael query ok !

上面的代碼我想大部分都能看明白,不明白的可以參考一下MySQL提供的有關C語言API部分文檔,各個函數都有詳細說明,有時間我整理一份常用的API說明出來。

⑶ c#連接mysql資料庫 代碼

連接字元串有問題,請檢查,可用datasource自動生成連接字元串。

⑷ 如何用C語言連接MYSQL資料庫

1、配置ODBC數據源。
2、使用SQL函數進行連接。
對於1、配置數據源,配置完以後就可以編程操作資料庫了。
對於2、使用SQL函數進行連接,參考代碼如下:
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
#include<windows.h>
#include<sql.h>
#include<sqlext.h>
void
main()
{
HENV
henv;
//環境句柄
HDBC
hdbc;
//數據源句柄
HSTMT
hstmt;
//執行語句句柄
unsigned
char
datasource[]="數據源名稱";
//即源中設置的源名稱
unsigned
char
user[]=
"用戶名";
//資料庫的帳戶名
unsigned
char
pwd[]=
"密碼";
//資料庫的密碼
unsigned
char
search[]="select
xm
from
stu
where
xh=0";
SQLRETURN
retcode;
//記錄各SQL函數的返回情況
//
分配環境句柄
retcode=
SQLAllocEnv(&henv);
//
等介於
SQLAllocHandle(SQL_HANDLE_ENV,
SQL_NULL
,
&henv);
//
設置ODBC環境版本號為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);
//直接連接數據源
//
如果是windows身份驗證,第二、三參數可以是

⑸ C++怎麼連接MySQL資料庫

//
S:~在官方給的例子基礎上進行修改後的例子
#include

#include

#include

#include

#include
"mysql_connection.h"
#include

#include

#include

#include

#include

using
namespace
std;
int
main(void)
try
{
sql::Driver
*driver;
sql::Connection
*con;
sql::Statement
*stmt;
sql::ResultSet
*res;
driver
=
0;
/*
Create
a
connection
*/
driver
=
get_driver_instance();
//
獲取連接驅動
con
=
driver->connect("tcp://localhost:3306",
"root",
"********");
//
ip,用戶,密碼
/*
Connect
to
the
MySQL
test
database
*/
con->setSchema("test");
//
選擇資料庫
stmt
=
con->createStatement();
//
創建查詢語句
res
=
stmt->executeQuery("select
*
from
a");
//
執行查詢
while
(res->next())
{
cout
<<
"\t...
MySQL
replies:
";
/*
Access
column
data
by
alias
or
column
name
*/
cout
<<
res->getString(1)
<<
'\t'
<<
res->getString(2)
<<
endl;
//
輸出1,2列
}
delete
res;
delete
stmt;
delete
con;
return
EXIT_SUCCESS;
}
catch
(sql::SQLException
&e)
{
cout
<<
"#
ERR:
SQLException
in
"
<<
__FILE__;
cout
<<
"("
<<
__FUNCTION__
<<
")
on
line
"
<<
__LINE__
<<
endl;
cout
<<
"#
ERR:
"
<<
e.what();
cout
<<
"
(MySQL
error
code:
"
<<
e.getErrorCode();
cout
<<
",
SQLState:
"
<<
e.getSQLState()
<<
"
)"
<<
endl;
}
運行截圖:
mysql
connector/c++
文檔(包括例子):
http://dev.mysql.com/doc/refman/5.1/en/connector-cpp.html
mysql
connector/c++
api下載:
http://dev.mysql.com/downloads/connector/cpp/
下載以後lib和include文件夾直接到你vc的lib和include里
然後工程庫引用里添加對mysqlcppconn.lib的引用
可能要將mysqlcppconn.dll放到c:\windows文件夾下
具體可以參考這里:
http://hi..com/buptyoyo/blog/item/11ddf212cdaef40b213f2e3d.html
另外注意目前有個已知的因debug和release模式下string長度不同而引起的bug:
http://bugs.mysql.com/bug.php?id=44272
所以代碼要在release下編譯運行,driver->connect才能連接成功

⑹ c語言怎麼連接mysql資料庫

如鵬網上有詳細的視頻教程,楊中科的C語言也能幹大事,裡面講得很清楚。要是在這里講需要寫很多東西,累手,還沒有視頻直觀

⑺ C++ 怎麼連接MySQL資料庫

#include <iostream>
#include <winsock2.h> // mysql.h中需要
#include <mysql/mysql.h> // 確保加了mysql的頭文件到編譯器目錄里/**
* 我只演示了連接,執行語句等請搜索網上例子
* 項目需要連接 libmysql.lib
* 執行程序需要包含 libmySQL.dll
*/
int main()
{
MYSQL * temp = NULL;
MYSQL * temp2 = NULL;
my_bool my_true = true; const char* hostname = "localhost"; //資料庫地址
const char* usernmae = "root"; //用戶名
const char* password = "root"; //密碼
const char* dbName = "test"; //資料庫名
unsigned int port = 3306; //埠 temp = mysql_init( NULL );
if(!temp)
{
printf("初始化失敗");
return 0;
} if(mysql_options(temp, MYSQL_SET_CHARSET_NAME, "gbk"))
{
printf("設置charset失敗");
return 0;
} if(mysql_options(temp, MYSQL_OPT_RECONNECT, &my_true))
{
printf("設置可重連失敗");
return 0;
} temp2 = mysql_real_connect(temp, hostname, usernmae, password, dbName, port, NULL, 0);
if(!temp2)
{
printf("連接失敗");
mysql_close(temp);
return 0;
} printf("連接成功,`temp2` 即為mysql連接,用做後續的查詢等操作."); return 0;
}

⑻ 用c語言怎麼連接資料庫呢

25.2.2. C API函數概述
這里歸納了C API可使用的函數,並在下一節詳細介紹了它們。請參見25.2.3節,「C API函數描述」。

函數
描述

mysql_affected_rows()
返回上次UPDATE、DELETE或INSERT查詢更改/刪除/插入的行數。

mysql_autocommit()
切換 autocommit模式,ON/OFF

mysql_change_user()
更改打開連接上的用戶和資料庫。

mysql_charset_name()
返回用於連接的默認字元集的名稱。

mysql_close()
關閉伺服器連接。

mysql_commit()
提交事務。

mysql_connect()
連接到MySQL伺服器。該函數已不再被重視,使用mysql_real_connect()取代。

mysql_create_db()
創建資料庫。該函數已不再被重視,使用SQL語句CREATE DATABASE取而代之。

mysql_data_seek()
在查詢結果集中查找屬性行編號。

mysql_debug()
用給定的字元串執行DBUG_PUSH。

mysql_drop_db()
撤銷資料庫。該函數已不再被重視,使用SQL語句DROP DATABASE取而代之。

mysql_mp_debug_info()
讓伺服器將調試信息寫入日誌。

mysql_eof()
確定是否讀取了結果集的最後一行。該函數已不再被重視,可以使用mysql_errno()或mysql_error()取而代之。

mysql_errno()
返回上次調用的MySQL函數的錯誤編號。

mysql_error()
返回上次調用的MySQL函數的錯誤消息。

mysql_escape_string()
為了用在SQL語句中,對特殊字元進行轉義處理。

mysql_fetch_field()
返回下一個表欄位的類型。

mysql_fetch_field_direct()
給定欄位編號,返回表欄位的類型。

mysql_fetch_fields()
返回所有欄位結構的數組。

mysql_fetch_lengths()
返回當前行中所有列的長度。

mysql_fetch_row()
從結果集中獲取下一行

mysql_field_seek()
將列游標置於指定的列。

mysql_field_count()
返回上次執行語句的結果列的數目。

mysql_field_tell()
返回上次mysql_fetch_field()所使用欄位游標的位置。

mysql_free_result()
釋放結果集使用的內存。

mysql_get_client_info()
以字元串形式返回客戶端版本信息。

mysql_get_client_version()
以整數形式返回客戶端版本信息。

mysql_get_host_info()
返回描述連接的字元串。

mysql_get_server_version()
以整數形式返回伺服器的版本號。

mysql_get_proto_info()
返回連接所使用的協議版本。

mysql_get_server_info()
返回伺服器的版本號。

mysql_info()
返回關於最近所執行查詢的信息。

mysql_init()
獲取或初始化MYSQL結構。

mysql_insert_id()
返回上一個查詢為AUTO_INCREMENT列生成的ID。

mysql_kill()
殺死給定的線程。

mysql_library_end()
最終確定MySQL C API庫。

mysql_library_init()
初始化MySQL C API庫。

mysql_list_dbs()
返回與簡單正則表達式匹配的資料庫名稱。

mysql_list_fields()
返回與簡單正則表達式匹配的欄位名稱。

mysql_list_processes()
返回當前伺服器線程的列表。

mysql_list_tables()
返回與簡單正則表達式匹配的表名。

mysql_more_results()
檢查是否還存在其他結果。

mysql_next_result()
在多語句執行過程中返回/初始化下一個結果。

mysql_num_fields()
返回結果集中的列數。

mysql_num_rows()
返回結果集中的行數。

mysql_options()
為mysql_connect()設置連接選項。

mysql_ping()
檢查與伺服器的連接是否工作,如有必要重新連接。

mysql_query()
執行指定為「以Null終結的字元串」的SQL查詢。

mysql_real_connect()
連接到MySQL伺服器。

mysql_real_escape_string()
考慮到連接的當前字元集,為了在SQL語句中使用,對字元串中的特殊字元進行轉義處理。

mysql_real_query()
執行指定為計數字元串的SQL查詢。

mysql_refresh()
刷新或復位表和高速緩沖。

mysql_reload()
通知伺服器再次載入授權表。

mysql_rollback()
回滾事務。

mysql_row_seek()
使用從mysql_row_tell()返回的值,查找結果集中的行偏移。

mysql_row_tell()
返回行游標位置。

mysql_select_db()
選擇資料庫。

mysql_server_end()
最終確定嵌入式伺服器庫。

mysql_server_init()
初始化嵌入式伺服器庫。

mysql_set_server_option()
為連接設置選項(如多語句)。

mysql_sqlstate()
返回關於上一個錯誤的SQLSTATE錯誤代碼。

mysql_shutdown()
關閉資料庫伺服器。

mysql_stat()
以字元串形式返回伺服器狀態。

mysql_store_result()
檢索完整的結果集至客戶端。

mysql_thread_id()
返回當前線程ID。

mysql_thread_safe()
如果客戶端已編譯為線程安全的,返回1。

mysql_use_result()
初始化逐行的結果集檢索。

mysql_warning_count()
返回上一個SQL語句的告警數。 詳見:http://dev.mysql.com/doc/refman/5.1/zh/apis.html#c-api-function-overview
http://dev.mysql.com/doc/refman/5.0/en/c.html

⑼ 用C語言怎麼實現與資料庫的連接

#include<mysql/mysql.h>

#include<stdio.h>

intmain()

{

MYSQL*conn;

MYSQL_RES*res;

MYSQL_ROWrow;

char*server="localhost";//本地連接

char*user="root";//

char*password="525215980";//mysql密碼

char*database="student";//資料庫名

char*query="select*fromclass";//需要查詢的語句

intt,r;

conn=mysql_init(NULL);

if(!mysql_real_connect(conn,server,user,password,database,0,NULL,0))

{

printf("Errorconnectingtodatabase:%s ",mysql_error(conn));

}else{

printf("Connected... ");

}

t=mysql_query(conn,query);

if(t)

{

printf("Errormakingquery:%s ",mysql_error(conn));

}else{

printf("Querymade... ");

res=mysql_use_result(conn);

if(res)

{

while((row=mysql_fetch_row(res))!=NULL)

{

//printf("num=%d ",mysql_num_fields(res));//列數

for(t=0;t<mysql_num_fields(res);t++)

printf("%8s",row[t]);

printf(" ");

}

}

mysql_free_result(res);

}

mysql_close(conn);

return0;

}

(9)c連接mysql資料庫代碼擴展閱讀

C語言使用注意事項:

1、指針是c語言的靈魂,一定要靈活的使用它:

(1)、指針的聲明,創建,賦值,銷毀等

(2)、指針的類型轉換,傳參,回調等

2、遞歸調用也會經常用到:

(1)、遞歸遍歷樹結構

(2)、遞歸搜索

熱點內容
vb軟體加密 發布:2024-11-15 21:17:23 瀏覽:595
本地ip可以搭伺服器嗎 發布:2024-11-15 21:04:27 瀏覽:162
阿里巴巴python 發布:2024-11-15 20:56:25 瀏覽:783
博圖腳本編輯 發布:2024-11-15 20:41:06 瀏覽:312
帶密碼的箱子鑰匙在哪裡 發布:2024-11-15 20:40:12 瀏覽:236
兩個次梁相交怎麼配置 發布:2024-11-15 20:27:35 瀏覽:373
android關機實現 發布:2024-11-15 20:26:42 瀏覽:56
木糠壓縮原理 發布:2024-11-15 20:22:53 瀏覽:654
編譯原理難以理解的問題 發布:2024-11-15 20:11:25 瀏覽:130
安卓9是什麼水平 發布:2024-11-15 20:06:57 瀏覽:185