#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;
}
做个记录,无他。