Mysql C API編程步驟
喀左網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,喀左網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為喀左上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的喀左做網(wǎng)站的公司定做!
1、首先我們要包含mysql的頭文件,并鏈接mysql動(dòng)態(tài)庫(kù)。即添加以下語(yǔ)句:
#include WinSock2.h // 進(jìn)行網(wǎng)絡(luò)編程需要winsock2.h
#include mysql.h
#pragma comment(lib, “l(fā)ibmysql.lib”)
2、創(chuàng)建MYSQL變量。如:
MYSQL mysql;
3、初始化MYSQL變量。
mysql_init(mysql);
4、調(diào)用mysql_real_connect函數(shù)連接Mysql數(shù)據(jù)庫(kù)。mysql_real_connect函數(shù)的原型如下:
MYSQL * STDCALL mysql_real_connect(MYSQL *mysql, const char *host,const char *user,const char *passwd,const char *db,unsigned int port,const char *unix_socket,unsigned long clientflag);
參數(shù)說(shuō)明:mysql–前面定義的MYSQL變量;host–MYSQL服務(wù)器的地址;user–登錄用戶名;passwd–登錄密碼;db–要連接的數(shù)據(jù)庫(kù);port–MYSQL服務(wù)器的TCP服務(wù)端口;unix_socket–unix連接方式,為NULL時(shí)表示不使用socket或管道機(jī)制;clientflag–Mysql運(yùn)行為ODBC數(shù)據(jù)庫(kù)的標(biāo)記,一般取0。連接失敗時(shí)該函數(shù)返回0。
5、調(diào)用mysql_real_query函數(shù)進(jìn)行數(shù)據(jù)庫(kù)查詢。mysql_real_query函數(shù)的原型如下:
int STDCALL mysql_real_query(MYSQL *mysql, const char *q, unsigned long length);
參數(shù)說(shuō)明:mysql–前面定義的MYSQL變量;q–SQL查詢語(yǔ)句;length–查詢語(yǔ)句的長(zhǎng)度。
查詢成功則該函數(shù)返回0。
6、通過(guò)調(diào)用mysql_store_result或mysql_use_result函數(shù)返回的MYSQL_RES變量獲取查詢結(jié)果數(shù)據(jù)。
兩個(gè)函數(shù)的原型分別為:
MYSQL_RES * STDCALL mysql_store_result(MYSQL *mysql);
MYSQL_RES * STDCALL mysql_use_result(MYSQL *mysql);
這兩個(gè)函數(shù)分別代表了獲取查詢結(jié)果的兩種方式。第一種,調(diào)用mysql_store_result函數(shù)將從Mysql服務(wù)器查詢的所有數(shù)據(jù)都存儲(chǔ)到客戶端,然后讀取;第二種,調(diào)用mysql_use_result初始化檢索,以便于后面一行一行的讀取結(jié)果集,而它本身并沒(méi)有從服務(wù)器讀取任何數(shù)據(jù),這種方式較之第一種速度更快且所需內(nèi)存更少,但它會(huì)綁定服務(wù)器,阻止其他線程更新任何表,而且必須重復(fù)執(zhí)行mysql_fetch_row讀取數(shù)據(jù),直至返回NULL,否則未讀取的行會(huì)在下一次查詢時(shí)作為結(jié)果的一部分返回,故經(jīng)常我們使用mysql_store_result。
7、調(diào)用mysql_fetch_row函數(shù)讀取結(jié)果集數(shù)據(jù)。
上述兩種方式最后都是重復(fù)調(diào)用mysql_fetch_row函數(shù)讀取數(shù)據(jù)。mysql_fetch_row函數(shù)的原型如下:
MYSQL_ROW STDCALL mysql_fetch_row(MYSQL_RES *result);
參數(shù)result就是mysql_store_result或mysql_use_result的返回值。
該函數(shù)返回MYSQL_ROW型的變量,即字符串?dāng)?shù)組,假設(shè)為row,則row〔i〕為第i個(gè)字段的值。當(dāng)?shù)浇Y(jié)果集尾部時(shí),此函數(shù)返回NULL。
8、結(jié)果集用完后,調(diào)用mysql_free_result函數(shù)釋放結(jié)果集,以防內(nèi)存泄露。mysql_free_result函數(shù)的原型如下:
void STDCALL mysql_free_result(MYSQL_RES *result);
9、不再查詢Mysql數(shù)據(jù)庫(kù)時(shí),調(diào)用mysql_close函數(shù)關(guān)閉數(shù)據(jù)庫(kù)連接。mysql_close函數(shù)的原型為:
void STDCALL mysql_close(MYSQL *sock);
用FILE 類型
popen函數(shù):執(zhí)行sql操作
fread函數(shù):獲取操作返回信息;
提取返回信息里你需要的內(nèi)容就可以了。
具體的不記得了。
用JDBC連接數(shù)據(jù)庫(kù),然后用sql語(yǔ)句。要導(dǎo)入mysql的驅(qū)動(dòng)包。
import java.sql.*;
public class TestMySql {
static Connection con = null; // 聲明Connection對(duì)象
static Statement sql = null;
static ResultSet res = null;
public static void main(String[] args) {
TestMySql c = new TestMySql();
con = c.getConnection();
try {
sql = con.createStatement();
res = sql.executeQuery("select * from dept");
//sql語(yǔ)句,我數(shù)據(jù)庫(kù)里有張dept表
while (res.next()) {//輸出結(jié)果
System.out.print(res.getString(1) + "——");
System.out.print(res.getString(2) + "——");
System.out.print(res.getString(3) );
System.out.println();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (res != null) {
res.close();
res =null;
}
if (sql != null) {
sql.close();
sql =null;
}
if (con != null) {
con.close();
con =null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public Connection getConnection() {
try {
Class.forName("com.mysql.jdbc.Driver");
// 加載oracleJDBC驅(qū)動(dòng)
System.out.println("數(shù)據(jù)庫(kù)驅(qū)動(dòng)加載成功");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {// 通過(guò)訪問(wèn)數(shù)據(jù)庫(kù)的URL獲取數(shù)據(jù)庫(kù)連接對(duì)象
con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/mydata", "root", "qwer1234");
//mydata為mysql名字
System.out.println("數(shù)據(jù)庫(kù)連接成功");
} catch (SQLException e) {
e.printStackTrace();
}
return con; // 按方法要求返回一個(gè)Connection對(duì)象
}
}
讀取出來(lái)的 char 字符么。
atoi 一下 不就變成int了么。
你這個(gè)屬于存練習(xí) 代碼. 邏輯比較混亂. 慢慢來(lái)吧.
我寫過(guò)的用 vector 和 map 做的 mysql讀取的結(jié)果集的封裝 你可以看看.
新聞名稱:mysql怎么獲取結(jié)果c mysql 獲取記錄條數(shù)
分享網(wǎng)址:http://vcdvsql.cn/article34/ddcdepe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷、品牌網(wǎng)站建設(shè)、做網(wǎng)站、網(wǎng)站導(dǎo)航、服務(wù)器托管、面包屑導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)