亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2878 | 回復(fù): 5
打印 上一主題 下一主題

求教,關(guān)于mysql的c語言API!!在線等,謝謝! [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2007-01-18 16:28 |只看該作者 |倒序瀏覽
請看下面的代碼:


  1. [Copy to clipboard]
  2. #include <mysql.h>
  3. #include <errmsg.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <string.h>

  7. int main()
  8. {
  9.         MYSQL mysql;
  10.         MYSQL_RES *result,*result2;
  11.         MYSQL_ROW row,row2;
  12.         char ord[600];
  13.         char value[20];
  14.         my_ulonglong  num;

  15.         mysql_init(&mysql);


  16.         mysql_real_connect(&mysql,"localhost","root","820723",NULL,0,NULL,0);
  17.         mysql_query(&mysql,"show databases;");
  18.         result = mysql_use_result(&mysql);
  19.         while(row = mysql_fetch_row(result)) {   //判斷是不是有數(shù)據(jù)庫,如果有報下已經(jīng)存在數(shù)據(jù)庫,沒有就建一個
  20.                 if (row) {
  21.                         printf("have databases!");
  22.                         fflush(stdout);
  23.                 } else {
  24.                         mysql_query(&mysql,"create database hlo;");
  25.                         fflush(stdout);
  26.                 }
  27.         }
  28.         mysql_query(&mysql,"use usertable");
  29.         sprintf(ord,"create table usertable (username varchar(16),ID int(6),ip_address varchar(16),port int(6),online_offline int(1),password varchar(7));");
  30.         mysql_query(&mysql,ord);

  31.         sprintf(ord,"select username from username where username=\"nihao\";");
  32.         mysql_query(&mysql,ord);   //查看table中有沒有username=nihao的那行,如果有的話有幾行?(包括0行)
  33.         result = mysql_store_result(&mysql);
  34.         num=mysql_num_rows(result);
  35.         printf("%d",num);
  36.         mysql_free_result(result);
  37. }
復(fù)制代碼

請看上面的代碼.,編譯是:


  1. gcc -ggdb3 -o fydream sql.c -I/usr/include/mysql -L /usr/lib/mysql -lmysqlclient
  2. 成功
  3. [root@freeman ~]# ./fydream
  4. have databases!段錯誤
復(fù)制代碼

我用gdb調(diào),發(fā)現(xiàn)是num=mysql_num_rows(result);這里段錯誤了,希望得到朋友們的指點,很著急的,在線等!謝謝了!
我還發(fā)現(xiàn),在同一個函數(shù)中不能連續(xù)使用mysql_fetch_row,一旦使用就會和上面的結(jié)果一樣,在執(zhí)行到第二個mysql_fetch_row時
就段錯誤了!

論壇徽章:
1
數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2016-03-12 06:20:00
2 [報告]
發(fā)表于 2007-01-18 17:09 |只看該作者
gdb調(diào)試mysql_num_rows錯了,那很清楚了啊
你把這行先注釋掉,看看結(jié)果對不對

論壇徽章:
0
3 [報告]
發(fā)表于 2007-01-18 17:15 |只看該作者
注釋掉那行,就沒有問題了,但是我急需一個能得到當前表用相應(yīng)條件查詢后得到的結(jié)果的行數(shù),要怎么解決呢?謝謝了!

論壇徽章:
0
4 [報告]
發(fā)表于 2007-01-18 21:02 |只看該作者
這串代碼很強,在windows下編譯后

---------------------------
mysqlnumrow.exe - 應(yīng)用程序錯誤
---------------------------
"0x100078a6" 指令引用的 "0x0000000c" 內(nèi)存。該內(nèi)存不能為 "read"。


要終止程序,請單擊“確定”。
要調(diào)試程序,請單擊“取消”。
---------------------------
確定   取消   
---------------------------

而且,發(fā)現(xiàn)LZ沒有判斷返回結(jié)果的習(xí)慣,不管連接是否成功,查詢是否成功,一律按成功來使用,這個習(xí)慣不改,永遠別想學(xué)好C


  1. int main()
  2. {
  3.         MYSQL mysql;
  4.         MYSQL_RES *result,*result2;
  5.         MYSQL_ROW row,row2;
  6.         char ord[600];
  7.         char value[20];
  8.         my_ulonglong  num;

  9.         mysql_init(&mysql);

  10.         mysql_real_connect(&mysql,"localhost","root","820723",NULL,0,NULL,0); //這里肯定能夠成功嗎?
  11.         mysql_query(&mysql,"show databases;");
  12.         result = mysql_use_result(&mysql);
  13.         while(row = mysql_fetch_row(result)) {   //判斷是不是有數(shù)據(jù)庫,如果有報下已經(jīng)存在數(shù)據(jù)庫,沒有就建一個
  14.                                 //你知道row里面存著什么嗎?你在判斷什么?
  15.                 if (row) {
  16.                                                 //既然在這里已經(jīng)成功了,為什么不退出循環(huán)?
  17.                         printf("have databases!");
  18.                         fflush(stdout);
  19.                 } else {
  20.                                                 //這里有可能執(zhí)行到嗎?
  21.                         mysql_query(&mysql,"create database hlo;");
  22.                         fflush(stdout);
  23.                 }
  24.         }
  25.         mysql_query(&mysql,"use usertable"); //為什么對還沒創(chuàng)建的表進行 use ?
  26.         sprintf(ord,"create table usertable (username varchar(16),ID int(6),ip_address varchar(16),port int(6),online_offline int(1),password varchar(7));");
  27.         mysql_query(&mysql,ord); //打算每運行一次就創(chuàng)建一次?能創(chuàng)建嗎?

  28.         sprintf(ord,"select username from username where username=\"nihao\";");
  29.         mysql_query(&mysql,ord);   //查看table中有沒有username=nihao的那行,如果有的話有幾行?(包括0行)
  30.         result = mysql_store_result(&mysql);
  31.         num=mysql_num_rows(result);
  32.         printf("%d",num);
  33.         mysql_free_result(result);
  34. }
復(fù)制代碼

[ 本帖最后由 Namelessxp 于 2007-1-18 21:23 編輯 ]

論壇徽章:
0
5 [報告]
發(fā)表于 2007-01-18 22:49 |只看該作者
不是我不想判斷阿,我找到mysql的api就不錯了,網(wǎng)上介紹的都是原型,都沒有說返回是什么樣的,要是能用返回值那就好說了,
您要知道哪有詳悉的mysql的c的api的話,給兄弟介紹一個阿,我這是頭一次用數(shù)據(jù)庫和c混和編程,寫的垃圾的地方,望您海涵!!
我在官方的文檔中著了半天,都是一堆errno和error,那么多錯誤號難道讓我一個一個的去switch么?而且那里說的原型都不寫返回值類型的,man文檔也查不到mysql的c的api的文檔!所以我只能先不判斷了!
還有您上面的給我的反問,我明天回答您,這些都是有根據(jù)的!今天太晚了,明天見!
謝謝您的指教!

[ 本帖最后由 fydream 于 2007-1-18 22:54 編輯 ]

論壇徽章:
0
6 [報告]
發(fā)表于 2007-01-19 09:44 |只看該作者

MYSQL C API 訪問程序

MYSQL C API 訪問程序
http://blog.csdn.net/hzhxxx/archive/2006/12/14/1443031.aspx

1.  以下是研究 mysql 5.0.22 得出的結(jié)果,描述并使用標準 c++演
示了使用 MySQLC API 函數(shù) 簡單操作數(shù)據(jù)庫的流程;
例子程序在 VC6(VC7.1) + windows 2000 上調(diào)試通過;
例子程序在 red hat linux 9,red fc6 上調(diào)試通過

2. 程序?qū)崿F(xiàn)了數(shù)據(jù)庫連接池技術(shù),有效的提高了數(shù)據(jù)訪問速度
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP