mysql sql语句 C++变量 数字型变量 整形变量 字符串变量

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;
}


  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值