当前位置:  技术问答>linux和unix

C连接MySQL的问题?

    来源: 互联网  发布时间:2015-07-01

    本文导语:  源文件: #include "sql.h" char *user_name = "root"; char *user_pass = "root"; char *databasename = "zivr"; char phonelist[20]={0}; MYSQL* result; /*  *  * DATABASE CONNECT  *  */ int db_connect(char* db_name) { mysql_init(&mysql); result = mysql_real_connec...

源文件:
#include "sql.h"

char *user_name = "root";
char *user_pass = "root";
char *databasename = "zivr";
char phonelist[20]={0};
MYSQL* result;

/*
 *
 * DATABASE CONNECT
 *
 */
int db_connect(char* db_name)
{
mysql_init(&mysql);
result = mysql_real_connect(&mysql,"localhost",user_name,user_pass,db_name,0,NULL,0);
if(result)
return 0;
else
return -1;
}
/*
 *
 *  UPDATE STATE
 *
 */

int update_state(char* tel,char* states)
{
   sprintf(query,"UPDATE phonelist SET state = '%s' WHERE telephone = '%s'",states,tel);
   mysql_real_query(&mysql,query,(unsigned int)strlen(query)); 
   res = mysql_use_result(&mysql); 
   mysql_free_result(res);
}
/*
 * SELECT TELEPHONE FROM TABLE
 *  
 */
 
void select_telephone()
{
   sprintf(query,"SELECT telephone,dialmonth FROM phonelist WHERE state = 'Y'");
   mysql_real_query(&mysql,query,(unsigned int)strlen(query)); 
   res = mysql_use_result(&mysql); 
   //while(row = mysql_fetch_row(res))
   row = mysql_fetch_row(res);
   strcpy(phonelist,row[0]);
   mysql_free_result(res);
   
}
void close_db(void)
{
  mysql_free_result(res); 
}

int main(void)
{
  db_connect("zivr");
  select_telephone();
  printf("%sn",phonelist);
}
头文件

#include 
#include 
#include 
#include 

MYSQL mysql; 
MYSQL_RES *res; 
MYSQL_ROW row; 

char query[80]; 

/* --------------Function List -------------- */
int db_connect(char* db_name);
int update_state(char* tel,char* states);
void select_telephone(void);
void close_db(void);

/* -------------------------------------------*/

编译使用 gcc -o zmesql zmesql.c -L/usr/lib/mysql -lmysqlclient -lz
但是运行时出现错误:
  segmentation fault
我使用gdb 调试
 其中有行为select_telephone();
请问这是什么原因?

|
void select_telephone()
{
   if(mysql_query(&mysql,query) != 0) 

   return; 

res = mysql_store_result(&mysql); 

if(row = mysql_fetch_row(res)) 

   strcpy(phonelist,row[0]);

mysql_free_result(res); 
}

|
第一 db_connect() 中没有判断 mysql_init() 成功否
第二在调 db_connect()后没有判断数据库打开成功否,就已经开始用了
其它的还没仔细看

|
.h文件中做如下修改
query[1024];
*******************
.c文件做如下修改
void select_telephone()
{
    memset(query, 0, 1024);
    sprintf(query,"SELECT telephone,dialmonth FROM phonelist WHERE state = 'Y'");

    if(mysql_query(&mysql,query) != 0) 
    { 
   return; 
    } 
    
    res = mysql_store_result(&mysql); 

    if(row = mysql_fetch_row(res)) 
    { 
      strcpy(phonelist,row[0]);
    } 
    mysql_free_result(res); 
}

int main(void)
{
if(db_connect("zivr") 

    
 
 

您可能感兴趣的文章:

  • [求教]:NFS的连接问题.做NFS时报连接错误,据称是portmap问题,但...
  • ftp连接问题,就是linux连接windows ftp的问题,高手请进(在线等待)!!!!!
  • 在线请教:linux下用MySQL C API 连接MySQL 4.1.12出现的连接问题,提示升级客户端!!!!!!
  • 动态连接库和静态连接库的问题 在线等待.......!!!
  • 一个连接池使用的问题:这种写法没用上连接池?
  • 我用JBuilder 7连接局域网内一ORACLE 9( 在本机可以连接)的问题?
  • 程序发布的问题(动态连接库的问题)
  • 关于远程连接lunx的问题 iis7站长之家
  • linux问题 secureCRT连接的问题 在线等急!~~
  • 文件连接问题
  • linux vsftpd连接问题
  • 数据库连接的问题
  • 关于远程连接lunx的问题
  • tcp连接的问题
  • 程序连接问题!
  • windows 客户机连接 samba 的权限问题, 急啊 ....
  • 关于使用数据库连接的问题。
  • 关于连接共享的问题, 请帮忙
  • 连接池问题
  • 关于LINUX SOCKET连接CPU占用问题
  • mysql中如何查看最大连接数(max_connections)和修改最大连接数
  • mysql密码过期导致连接不上mysql
  • Myeclipse中自带Tomcat的JDBC连接池配置(mysql和mssql)
  • mysql开启远程连接(mysql开启远程访问)
  • php中内置的mysql数据库连接驱动mysqlnd简介及mysqlnd的配置安装方式
  • 解决远程连接mysql很慢的方法(mysql_connect 打开连接慢)
  • mysql jdbc连接mysql数据库步骤及常见参数详解
  • Linux下的C++程序怎么连接WIN2000下的SQL Server 2000?或者如何连接MySQL?
  • mysql连接的空闲时间超过8小时后 MySQL自动断开该连接解决方案
  • windows mysql 客户端连接 VMWare中ubuntu里的MySQL
  • php连接不上mysql但mysql命令行操作正常的解决方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 如何在windows上远程连接centOS桌面
  • 什么是socket的长连接,以及如何实现长连接,长连接和短连接有什么区别?
  • php中操作memcache的类及成员列表及php下如何连接memched服务器
  • 建立长连接的SOCET通讯后,如何检查长连接的有效性,如何获知连接状态
  • Oracle 表连接方式(内连接/外连接/自连接) 详解
  • 关于inetd。我做了一个测试程序,想计算ftp最多能有多少了连接,我发现当连接到1020次就不可以连接了,哪位大侠知道如何做才能将连接数量增加至10000呢??
  • 哪位给解释一下长连接和短连接的区别?
  • ssh连接得通虚拟机,连接不通隔壁宿舍?
  • windows server2012无法连接无线网络解决方法(windows无线连接)
  • 请问unix/linux下动态连接库和静态连接库有什么区别?
  • fedora15 KDE桌面下能连接WLAN,GNOME下能搜到信号,就是连接不上,。。。。
  • linux 有线连接了却显示有线连接断开是怎么回事
  • 建立一个ftp数据连接并传送或接受完毕一些数据后,能否不关闭此数据连接,下次接着用?
  • oracle远程连接服务器出现 ORA-12170 TNS:连接超时 解决办法
  • LINUX中连接C++的库怎么连接.库在什么位置,还有什么特殊命令吗?
  • socket 断开连接如何再恢复连接
  • 请问连接本机数据库的JDBC,和连接远程的JDBC有没有区别?
  • 大家有多少web application是直接连接数据库的?又有多少是通过weblogic或websphere之类连接的?
  • java数据库连接池和数据库连接示例
  • 如何控制Corba客户端的连接?(比如在服务器上可以关掉客户端的连接)(发言就给分)
  • 在linux下可以使用dao方式连接数据库吗?可以连接musql吗?回答就给分!急


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3