mysqlc语言linux
找不到库的路径,或者你的include的路径不正确,请检查下你的配置的include路径是否包含有你的include文件。
还有注意编译时:
cc -o test test.c 【libmysqlclient.a】 -g ...
要写上这个库...
或
gcc -o test -L/usr/lib/mysql -lmysqlclient test.c
‘贰’ linux系统下c语言连接mysql数据库时有关mysql_error这个函数的返回值的问题,求知情人士
应该这样用,连接的时候不要指定数据库,分步操作和检测
if(!mysql_real_connect(character_ptr,"localhost","root","24157518",
NULL
,0,NULL,0))
printf("Error
connecting
to
server:
%s\n",
mysql_error(character_ptr));
if(!mysql_select_db(character_ptr,
"test_database"))
printf("Error
connecting
to
database:
%s\n",
mysql_error(character_ptr));
‘叁’ linux系统下 c语言 mysql编程如何把查询到的表多个字段内容保存到变量里面。
mysql不是这样用的
sql="select tlr_no,commid from ol_transdetail where tran_date='0605'樱磨亏 and tran_time='171721' and seqno='000137'";
mysql_query( conn, sql );
定义一个数据集游唯 MYSQL_RES *res ;
res=mysql_store_result( conn );
再定义一个脊神行数据变量 MYSQL_ROW row ;
row=mysql_fetch_row( res );
row[0] is tlr_no
row[1] is commid
‘肆’ 关于linux下用C语言编程,往mysql数据库里存数据问题。求高人指教
int a;
char c[16];
char sql[128];
a=112;
b="棚型Anv";
memset(sql, 0, sizeof(sql));
sprintf(sql, "insert into b values(%d,'兆和茄族察%s')",a,b);
res = mysql_query(&my_connection,sql);
‘伍’ 关于linux下c语言链接mysql
和.net同样的道理,你在.net也需要在你的部署包中包含dll才能去连接,除非你静态联接了相关的code,
在linux下你需要下载mysql的c库开发包(libmysql++-dev
libmysql++2c2a
libmysqlclient15-dev
libmysqlclient15off)
这里面已经包含了动态库和静态库,如果是静态库链接,你就只需要把你的程序部署给别人即可,如果是动态链接,还需要把相关的.so也包含在你的部署包中分发给使用者
‘陆’ linux下C语言操作mysql出错的问题
要袭运衡不你把mysql
的包路径放到LIB变量里,
用export
LIB
重新声明一下看看
还有,可能权限不够,所以你试悄宏着ROOT权限编译拍做
一下看看。
‘柒’ 求教高人,linux下c语言如何连接mysql数据库啊,求高手给点资料,谢谢。
帮你一下吧,我只能粗写,你自己详细参考一下函数库,下面localhost,是数据库服务器的地址,
username,password分别为访早滑链问数据库所需要的用户名和密码,database是数据库的名称,请你参考MYSQL结构体以获取更加详细的参数信息
#include <让清stdlib.h>
#include<stdio.h>
#include "mysql.h"
int main(int argc,char**argv){
MYSQL *conn_ptr;
conn_ptr=mysql_init(NULL);
if(!conn_ptr){
fprintf(stderr,"mysql_init failed\n");
return EXIT_FAILURE;
}
conn_ptr=mysql_real_connect(conn_ptr,"localhost","username","password","database"陆孙,0,NULL,0);
if(conn_ptr){
printf("Connection success\n");
}else{
printf("Connection failed\n");
}
mysql_close(conn_ptr);
return EXIT_SUCCESS;
}
‘捌’ linux下c语言连接Mysql
老大,原来你连 C 的原理都不会啊?
C 语言所有调用函数,都要有声明,这种外部函数库的调用,都要用他们的 header 文件来声明函数变量等等的东西,编译器会根据实际情况去把这些程序里面的函数调用链接到函数库的正确位置上。
微软的产品因为他垄断了他自己系统的所有功能设计。所以他的系统+他的开发程序+他的开发函数库就不需要 header 文件了,因为它可以设计为 dll 本身含有足够的信息去干别的事情了。所以,你别以为你用了微软的 .net ,他就还是 C 语言了。他已经脱离了 C 语言的范围了。
GCC一般情况下是编译器,但编译器是不够的,还需要连接器的工作才行。binutils 里面的软件提供相关的功能。
要知道以前链接到函数库功能,光有 header 和函数库文件本体还是不行的,还需要另外的函数库信息文件来帮助编译器连接器来找到正确的函数入口位置才行的。
你编程 C ,你要选择你所使用的功能调用方法,GCC 一般调用 mysql 有调用外部 dll ,或者程序自己直接链接 mysql 端口,自己分析 mysql 服务进程发送的各种信息!
前一种办法,可以直接选择 mysql 客户端里面的 SDK 来直接获得官方的功能支持,但官方 MySQL 是 GPL 协议发布的,你使用他的功能接口后,你的程序也必须以 GPL 发布,不然你就要去选择其他的函数库,比如 ODBC 的 mysql 库。当然还有第三方的 mysql 功能库可以选择。
不过你要注意,LGPL 必须严格区分你的程序和 LGPL 代码。你必须动态链接到 LGPL 函数库。如果你的程序包含 LGPL 函数库一起发布,且 LGPL 库是你的软件的必备函数库,那么你的程序也必须开源,但不是 GPL 而是 LGPL !
不然你就选择自己写程序直接与 mysql 服务器进行数据传输,不使用第三方功能库。
但我不认为身为一个 Linux 下程序开发人员,会去傻傻的自己写功能函数而不是用现成的函数库。
你所遇到的“非要客户安装 mysql client ”,就是因为你的软件调用了一些非你自己编写的函数调用功能,而为了获取这些函数而需要安装几个 mysql 函数库的问题。
这个问题我想不应该是一个开发人员提出来的吧?
------------------------------------
楼主你还是重新学习 C 语言吧。.net 的 C 被微软改的不是真正的 C 语言了,所以你没办法按照 C 的标准去比较 .net 和 GCC 的。
而且很多 .net 的编程习惯也没办法延续到 GCC 的。
‘玖’ linux下用C语言链接mysql
安装mysql-陵行devel的rpm 。。。
这是mysql的开发包。他提供了基本操作尺宏哗接口。
安装后,头文件在 /usr/绝哗include/mysql/...
而动态库在 /usr/lib/mysql/
再查查资料。
mysql_init;
mysql_options;
mysql_real_connect;
mysql_real_query;
mysql_close;
‘拾’ linux下用C语言对mysql中select语句的封装
1.需要用到mysql c api
2.步骤通常是:连接数据库,执行查询,异常处理这些。
3.你需要对api 进行一些了解,然后合理调用。
参考代码:
//连接代码:
/*
* connect1.c - connect to and disconnect from MySQL server
*/
#include <my_global.h>
#include <my_sys.h>
#include <mysql.h>
static char *opt_host_name = NULL; /* server host (default=localhost) */
static char *opt_user_name = NULL; /* username (default=login name) */
static char *opt_password = NULL; /* password (default=none) */
static unsigned int opt_port_num = 0; /* port number (use built-in value) */
static char *opt_socket_name = NULL; /* socket name (use built-in value) */
static char *opt_db_name = NULL; /* database name (default=none) */
static unsigned int opt_flags = 0; /* connection flags (none) */
static MYSQL *conn; /* pointer to connection handler */
int
main (int argc, char *argv[])
{
/* initialize connection handler */
conn = mysql_init (NULL);
if (conn == NULL)
{
fprintf (stderr, "mysql_init() failed (probably out of memory)\n");
exit (1);
}
/* connect to server */
if (mysql_real_connect (conn, opt_host_name, opt_user_name, opt_password,
opt_db_name, opt_port_num, opt_socket_name, opt_flags) == NULL)
{
fprintf (stderr, "mysql_real_connect() failed\n");
mysql_close (conn);
exit (1);
}
/* disconnect from server */
mysql_close (conn);
exit (0);
}
//处理sql 语句的函数:
void
process_statement (MYSQL *conn, char *stmt_str)
{
MYSQL_RES *res_set;
if (mysql_query (conn, stmt_str) != 0) /* the statement failed */
{
print_error (conn, "Could not execute statement");
return;
}
/* the statement succeeded; determine whether it returned data */
res_set = mysql_store_result (conn);
if (res_set) /* a result set was returned */
{
/* process rows and then free the result set */
process_result_set (conn, res_set);
mysql_free_result (res_set);
}
else /* no result set was returned */
{
/*
* does the lack of a result set mean that the statement didn't
* return one, or that it should have but an error occurred?
*/
if (mysql_field_count (conn) == 0)
{
/*
* statement generated no result set (it was not a SELECT,
* SHOW, DESCRIBE, etc.); just report rows-affected value.
*/
391
Processing SQL Statements
printf ("%lu rows affected\n",
(unsigned long) mysql_affected_rows (conn));
}
else /* an error occurred */
{
print_error (conn, "Could not retrieve result set");
}
}
}
//以上提供的是常规的处理,你需要根据实际情况完善。
//同时调用了一些mysql 的api函数。
ref:
MySQL
(Fourth Edition)
Paul DuBois