c++版本中的例子,编码问题在另一个帖子里:http://blog.csdn.net/lbd2008/article/details/8426778
string name = "test";
int age = 23;
string sql_insert = "insert into mytest (name,age) values ( ' " + name + " ' , " + IntToStr(age)+ " ) ; " ;
其中IntToStr()实现将int转换为string类型,这个方法是自己想出来的,网上说到的数字型变量直接用 “+ age+ ”这种形式在vs2010里编译通不过,还望高手多多指教!
PS:当要插入的变量含有单引号等转义字符时,需要提前处理下。比如 I‘m happy ,转换成I’‘m happy ,这样sql语句才不会出错。其他的转移字符可以自己转换下。
string IntToStr(int num){
stringstream ss;
ss.clear();
ss << num;
return ss.str();
}
全部代码为:
#include <iostream>
#include <string>
#include <sstream>
#include <libxl.h>
#include <Windows.h>
#include "winsock.h"
#include "mysql.h"
using namespace std;
using namespace libxl;
string IntToStr(int num){
stringstream ss;
ss.clear();
ss << num;
return ss.str();
}
int main(int argc, char* argv[])
{
const char *host = "localhost";//主机
const char *user = "root";//用户名
const char *passwd = "abc123";//密码
const char *db = "test";//数据库名
unsigned int port = 3306;//mysql端口
const char *unix_socket = 0;
unsigned long client_flag = 0;
MYSQL mysql;
MYSQL_RES *result;
MYSQL_FIELD *field;
MYSQL_ROW sql_row;
string name = "中国";
int age = 12;
string sql_insert = "insert into mytest (name,age) values ('"+name+"',"+IntToStr(age)+");";
string sql_select = "select * from mytest where age = " + IntToStr(age)+"";
cout<<sql_insert<<endl;
cout<<sql_select<<endl;
mysql_library_init(0,NULL,NULL);//初始化MYSQL C API
mysql_init(&mysql);
mysql_options(&mysql,MYSQL_SET_CHARSET_NAME,"GBK");
if(mysql_real_connect(&mysql,host,user,passwd,db,port,unix_socket,client_flag)){
cout<<"database connection OK!"<<endl;
/*if(!mysql_query(&mysql,sql_insert.c_str())){
cout<<"insert success!!!!!!!!"<<endl;
}else{
cout<<mysql_error(&mysql)<<endl;
}*/
int res = mysql_query(&mysql,sql_select.c_str());
if(!res){//mysql_query执行成功返回0
cout<<"success!"<<endl;
result = mysql_store_result(&mysql);
if(result){
int i,j;
cout<<"number of result: "<<(unsigned long)mysql_num_rows(result)<<endl;
cout<<endl;
//获取列名
cout<<"num of cols: "<<mysql_num_fields(result)<<endl;
cout<<endl;
field = mysql_fetch_fields(result);
for(i = 0; i < mysql_num_fields(result); i++){
cout<<field[i].name<<" ";
}
cout<<endl;
while(sql_row = mysql_fetch_row(result)){
for(i=0;i<mysql_num_fields(result);i++)
{
cout<<sql_row[i]<<" ";
}
cout<<endl;
}
}
}
else{
cout<<mysql_error(&mysql)<<endl;
}
}
system("pause");
return 0;
}