MariaDB社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4116|回复: 5
打印 上一主题 下一主题

请教如何在ubuntu中进行mysql的C接口编程

[复制链接]
跳转到指定楼层
1#
发表于 2009-4-21 22:40:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题

PS:能不能提供一些例子程序呢??
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 转播转播 分享分享 分享淘帖 顶 踩
2#
发表于 2009-4-22 10:36:13 | 只看该作者
手头没有现货哦
看看参考手册章节-“API和库”,对你有帮助不...
3#
 楼主| 发表于 2009-4-23 15:53:41 | 只看该作者
那个手册我有一只在看呢
我也有一个demo,如下(是windows下的)
#include <windows.h>
#include <process.h>
#include <iostream>
#include <string>
#include "mysql.h"   //安装的mysql的头文件所在的位置
using namespace std;
string host="localhost";
string user="root";

string pwd="904";
string dbname="jjdb";
string sql="select * from test";
unsigned int port=3306;
int status;
int main(){
        MYSQL *mysql;
        mysql=mysql_init(0);
        MYSQL_RES *result;
        MYSQL_ROW row;
        if(mysql_real_connect(mysql,host.c_str(),user.c_str(),pwd.c_str(),dbname.c_str(),port,NULL,CLIENT_FOUND_ROWS)==NULL){
                cout << "connect failure!" << endl;
                return EXIT_FAILURE;
        }else{
                cout << "connect success!" << endl;
        }
        mysql_set_character_set(mysql,"gbk");
        status=mysql_query(mysql,sql.c_str());
        if(status !=0 ){
                cout << "query failure!" << endl;
        }
        cout << "the status is :" << status << endl;
        result=mysql_store_result(mysql);

        while(row=mysql_fetch_row(result)){
                cout <<row[0]<<"|"<< row[1] <<"|"<< row[2] << endl;
        }

        mysql_free_result(result);
        mysql_close(mysql);
}
编译通过,运行没问题

我修改了一下程序,对表test ,insert了以行新的数据,如下
#include <windows.h>
#include <process.h>
#include <iostream>
#include <string>
#include "mysql.h"   //安装的mysql的头文件所在的位置
using namespace std;
string host="localhost";
string user="root";

string pwd="904";
string dbname="jjdb";
string sql="select * from test";
unsigned int port=3306;
int status;
int main(){
        MYSQL *mysql;
        mysql=mysql_init(0);
        MYSQL_RES *result;
        MYSQL_ROW row;
        if(mysql_real_connect(mysql,host.c_str(),user.c_str(),pwd.c_str(),dbname.c_str(),port,NULL,CLIENT_FOUND_ROWS)==NULL){
                cout << "connect failure!" << endl;
                return EXIT_FAILURE;
        }else{
                cout << "connect success!" << endl;
        }
        mysql_set_character_set(mysql,"gbk");
        status=mysql_query(mysql,sql.c_str());
        if(status !=0 ){
                cout << "query failure!" << endl;
        }
        cout << "the status is :" << status << endl;
        result=mysql_store_result(mysql);
       
        MYSQL_ROW_OFFSET off=mysql_row_tell(result);

        while(row=mysql_fetch_row(result)){
                cout <<row[0]<<"|"<< row[1] <<"|"<< row[2] << endl;
        }

        cout<<endl;
        sql="insert into test values('aaa','f',20)";
        if(mysql_query(mysql,sql.c_str()))
        {
                cout << "query failure!" << endl;
        }
       
        result=mysql_store_result(mysql);
        mysql_row_seek(result,off);
        while(row=mysql_fetch_row(result)){
                cout <<row[0]<<"|"<< row[1] <<"|"<< row[2] << endl;
        }

        mysql_free_result(result);
        mysql_close(mysql);
}

编译通过,运行时到了第二个while循环要输出新获取的结果集的时候就报错,把while那段代码注释掉就没问题。

我想解决的问题是
1.在同一次数据库的连接当中,能不能多次获得结果集吗?
2.我上面的程序是什么问题,不能访问新获取的结果集吗?
3.如何对结果集进行修改并把更新反馈到表中,还是只能通过sql语句直接对表进行更新操作?
4#
 楼主| 发表于 2009-4-24 23:16:57 | 只看该作者
没人回答我吗?
5#
发表于 2009-4-27 15:46:31 | 只看该作者
关注...
6#
 楼主| 发表于 2009-4-27 21:33:09 | 只看该作者
.....又关注..................
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|MariaDB社区 ( 京ICP备07012489号    |
业务联系: QQ:48474881; 邮箱: 48474881@qq.com; 电话:13911732319
声明:本站部分文章是网友转载,若未经作者同意或署名有误,请联系网站管理员。

GMT+8, 2024-9-20 00:16 , Processed in 0.101677 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表