我的操作系统是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没有写过,所以就显得比较弱些
|
|