MariaDB社区

标题: 请教如何在ubuntu中进行mysql的C接口编程 [打印本页]

作者: 171128203    时间: 2009-4-21 22:40
标题: 请教如何在ubuntu中进行mysql的C接口编程
如题

PS:能不能提供一些例子程序呢??
作者: kider    时间: 2009-4-22 10:36
手头没有现货哦
看看参考手册章节-“API和库”,对你有帮助不...
作者: 171128203    时间: 2009-4-23 15:53
那个手册我有一只在看呢
我也有一个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语句直接对表进行更新操作?
作者: 171128203    时间: 2009-4-24 23:16
没人回答我吗?
作者: kider    时间: 2009-4-27 15:46
关注...
作者: 171128203    时间: 2009-4-27 21:33
.....又关注..................




欢迎光临 MariaDB社区 (http://123.56.88.72/) Powered by Discuz! X3.2