中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > C/C++
初学者,想用C来连接MySql,请指教!
作者:未知 时间:2005-09-13 19:19 出处:ChinaUnix.net 责编:chinaitpower
              摘要:初学者,想用C来连接MySql,请指教!

我的操作系统是RedHat 7.3(完全安装),请问怎样这在个环境下用C语言来连接到RedHat 7.3自带的MySql数据库,我只知道MySql自带了和C语言的接口,但是具体怎样使用,怎样进行编译却不清楚,请给个代码,帮帮我吧,多谢!!!

 bombbaby 回复于:2003-03-13 12:06:18
[code:1:4f16699c22]
#include <mysql.h>
#include <stdio.h>

/******连接到Mysql数据库上******/
MYSQL *Connect_Mysql(char *hostname, char *username, char *passwd, char *dbname, \
        unsigned portnum, char *socketname, unsigned flags)
{
        MYSQL   *conn;

        conn = mysql_init(NULL);
        if (conn == NULL) {
                return(NULL);
        }
        if (mysql_real_connect(conn, hostname, username, passwd, dbname, portnum, \
                socketname, flags) == NULL) {
                Print_Error(conn, __FILE__, __LINE__);
                return(NULL);
        }
        return(conn);
}
[/code:1:4f16699c22]

这个是用来连接mysql数据库的,反正就是调用mysql下的C api,看一下mysql的文档就知道它的api是什么了。

[code:1:4f16699c22]
        MYSQL_RES       *res_set = NULL;
        MYSQL_ROW       row;

        snprintf(strSql, 1023, "SELECT max(iServID) FROM tUserBasic");//sql 语句
        if( mysql_query(conn, strSql) != 0 ) {      //根据sql语句执行
                Print_Error(conn, __FILE__, __LINE__);
                return -1;
        }
        if( (res_set = mysql_store_result(conn)) == NULL ) {//得到返回记录
                Print_Error(conn, __FILE__, __LINE__);
                return -2;
        }
        if( (row = mysql_fetch_row(res_set)) == NULL ) {//得到记录的一行
                servid = 0;
        }
        else
                sscanf(row[0], "%d", &servid);
[/code:1:4f16699c22]

l连接上以后返回一个MYSQL* 的指针,然后就可以对它操作了。

 kpflysky 回复于:2003-03-13 12:10:21
楼上的最对

 wudicc 回复于:2003-03-13 12:51:04
是否要加上一些与mysql有关的参数,如 -lmysqlclient等。多谢!

 bombbaby 回复于:2003-03-13 12:56:30
编译的时候要加的
gcc -c *.c -I $/mysqlpath -lmysqlclient

 wudicc 回复于:2003-03-13 13:02:24
能否给个具体点的,如:数据库地址:192.168.0.2,数据库名:mytest,表名是mytable,登录名:user01,密码:12345678。
,,,,麻烦bombbaby了。。。真是不好意思。

 bombbaby 回复于:2003-03-13 13:22:18
难道还不具体吗??
[code:1:d4b6222b27]
 int main()
{
      MYSQL* conn;
      MYSQL_RES       *res_set = NULL;
      MYSQL_ROW       row;
      char       strsql[255];
      conn = Connect_Mysql("192.168.0.2", "user01", "12345678", "mytest", 0, NULL, 0);
      if (conn == NULL)
     {
             printf("connect mysql error!\n");
             exit(0);
     } 
      snprintf(strsql, 255, "SELECT max(iServID) FROM tUserBasic");//sql 语句
        if( mysql_query(conn, strsql) != 0 ) {      //根据sql语句执行
                Print_Error(conn, __FILE__, __LINE__);
                exit(0);
        }
        if( (res_set = mysql_store_result(conn)) == NULL ) {//得到返回记录
                Print_Error(conn, __FILE__, __LINE__);
                exit(0);
        }
        if( (row = mysql_fetch_row(res_set)) == NULL ) {//得到记录的一行
                servid = 0;
        }
        else
                sscanf(row[0], "%d", &servid); 
}
[/code:1:d4b6222b27]

就是这样的,语法上没有检查。

 wudicc 回复于:2003-03-13 15:07:00
多谢!因为在linux没有写过,所以就显得比较弱些

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有