mysql_xm

6 篇文章 0 订阅
5 篇文章 0 订阅

#include <iostream>
#include <fstream>
#include <string>
#include <sstream>

#include "filesupport.h"

#include "mysql_driver.h"
#include "mysql_connection.h"
#include "cppconn/driver.h"
#include "cppconn/statement.h"
#include "cppconn/prepared_statement.h"
#include "cppconn/metadata.h"
#include "cppconn/exception.h"

#pragma comment(lib, "mysqlcppconn.lib")

std::string _database_name = "proface";

bool is_database_exist(sql::Statement *state, std::string database_name)
{
	sql::SQLString cmd;
	sql::ResultSet *result;

	cmd = "show databases;";
	result = state->executeQuery(cmd);

	while (result->next())
	{
		sql::SQLString name = result->getString("Database");

		if (strcmp(name.c_str(), database_name.c_str()) == 0)
			return true;
	}

	return false;
}

bool create_database(sql::Statement *state)
{
	std::string cmd;

	cmd = "create database " + _database_name + ";";

	if (!state->execute(sql::SQLString(cmd.c_str(), cmd.length())))
		return true;

	return false;
}

void RunConnectMySQL()
{
	FileSupport fs;
	FileList flist = fs.get_file_names("../database2", "\.dat$");

	sql::SQLString host = "tcp://localhost:3306";
	sql::SQLString user = "root";
	sql::SQLString passwd = "123";

	sql::mysql::MySQL_Driver *driver=0;
	sql::Connection *conn=0;
	sql::Statement *state=0;
	sql::ResultSet *result;

	try
	{
		driver = sql::mysql::get_mysql_driver_instance();

		conn = driver->connect(host, user, passwd);
	}
	catch (...)
	{
		std::cout << "link to mysql failed" << std::endl;
	}


	state = conn->createStatement();

	std::string cmd;

	if (!is_database_exist(state, _database_name))
		create_database(state);
	
	cmd = "use " + _database_name + ";";
	state->execute(sql::SQLString(cmd.c_str(), cmd.length()));

	//
	for (auto file : flist)
	{
		std::cout << file << std::endl;

		std::ifstream infile(file);

		std::stringstream buffer;

		buffer << infile.rdbuf();

		std::string feature(buffer.str());

		std::cout << feature.length() << std::endl;

		sql::mysql::MySQL_Connection *mysql_conn = dynamic_cast<sql::mysql::MySQL_Connection*>(conn);
		sql::SQLString feature_escape = mysql_conn->escapeString(sql::SQLString(feature.c_str(), feature.length()));

		cmd = "insert into info values ('wjg', 'aaa', \'" + std::string(feature_escape.c_str()) + "\');";
		std::cout << cmd << std::endl;

		state->execute(sql::SQLString(cmd.c_str(), cmd.length()));

		cmd = "select * from info";
		result = state->executeQuery(sql::SQLString(cmd.c_str(), cmd.length()));

		while (result->next())
		{
			sql::SQLString name = result->getString("name");
			std::cout << name.c_str() << std::endl;
		}
	}

	conn->close();

	if (conn == 0) delete conn;
	if (state == 0) delete state;
}

int main()
{
	RunConnectMySQL();
	getchar();
	return 0;
}
做个记录,无他。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值