MySQL connector/C++ 连接mysql效率低下解决

By | 04月10日
Advertisement

这个问题 说解决也不算是被解决了,只能是让数据库插入的时候不会有像直接插入一样有那么多的问题了。。

我的解决方法是 开启mysql的事务。

开始我也不知道是不是我的mysql配置优化的问题(WAMP统一安装,无限默认下一步的)。

在用PHP测试的时候插入的水平也和c++的效率是一个样的1秒钟才插入不到50条数据。

然后朋友的php lamp环境插入1w条数据也只用了0.01秒。

在网上百度很久 没有百度到,在google上搜索到了一文章 跟我遇见的问题是一样的,然后 他是通过事务来处理大批量数据插入的。

直接代码:

#include <statement.h>   #include<windows.h> #include "mysql_connection.h"  #include "mysql_driver.h"   #include <cppconn/driver.h>  #include <cppconn/exception.h>  #include <cppconn/resultset.h>  #include <cppconn/statement.h>  #include <cppconn/prepared_statement.h>    using namespace sql; using namespace std;   void RunConnectMySQL()    {     mysql::MySQL_Driver *driver;    Connection *con;    Statement *state;       ResultSet *result;      // 初始化驱动    driver = sql::mysql::get_mysql_driver_instance();       // 建立链接     try{    con = driver->connect("tcp://127.0.0.1:3306", "root", "");  //注意这里用的是TCP,开始使用的是http连接了很久都没有连接上的  }   catch(SQLException &e){         cout<<"数据库连接失败"<<endl;      return ;    }   state = con->createStatement();      state->execute("use test");      LARGE_INTEGER BegainTime ;      LARGE_INTEGER EndTime ;     LARGE_INTEGER Frequency ;   QueryPerformanceFrequency(&Frequency);  QueryPerformanceCounter(&BegainTime) ; //计算代码执行时间的              string sql = " INSERT INTO testin VALUES (NULL ,'xxxx','23','text') ;";         con->setAutoCommit(false);   for(int  i= 0  ; i <= 10000;i++)     {   try{                state->execute(sql);         }catch(sql::SQLException &e)        {           cout<<"ERROR : "<<e.getSQLState()<<endl;      }       if(!(i%10))             cout<<i<<endl;  }//         con->commit();       con->setAutoCommit(true);    QueryPerformanceCounter(&EndTime) ;     cout << ( EndTime.QuadPart - BegainTime.QuadPart )*1000 / Frequency.QuadPart ;        delete state;       delete con;   }   int main(int argc, char* argv[])   {      RunConnectMySQL();      getchar();      return 0;   }

在我的机器上跑1w条插入数据 用了1.6s

然后 还没有解决的问题 就是 如何让MYSQL connector 如何解决能够同时执行多条sql语句的问题。网上搜索的目前还不靠谱 - -

Similar Posts:

  • VS2010环境下 用MySQL Connector C 连接 MySql数据库

    1.vs2010中利用Connect C连接数据,需要进行包含和库目录设置 1)项目-属性-配置属性-VC++目录-包含目录 中加入mysql Connect C文件的include目录 C:\Program Files\MySQL\MySQL Connector.C 6.1\include 2)项目-属性-配置属性-VC++目录-库目录 中加入mysql Connect C文件的lib目录 C:\Program Files\MySQL\MySQL Connector.C 6.1\lib 2.编

  • 使用Connector/J连接MySQL数据库(修改)

    前几天写了'使用Connector/J连接MySQL数据库',今天又阅读了tomcat的联机文档,发现其实不用那么大费周折,只需一步就可以了,即直接把mysql-connector-java-3.1.12-bin.jar放到 $CATALINA_HOME/common/lib目录下即可(本人已试验过):文档中还建议不要把该.jar文件放到/WEB-INF/lib或$JAVA_HOME/jre/lib/ext或者是其他目录,因为这样很可能会出现意想不到的问题.

  • 【MySQL】JDBC连接MySQL的一些问题以及解决办法

    1.Java使用mysql-jdbc连接MySQL出现如下警告: Establishing SSL connection without server's identityverification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+requirements SSL connection must be established by default if explicit optionisn't se

  • 【Mysql】linux连接mysql错误解决方案

    1.源码 //connect-mysql.c #include <stdio.h> #include "/usr/include/mysql/mysql.h" int main() { MYSQL mysql;//need a instance to init int t,r;//connect the database mysql_init(&mysql); if(!mysql_real_connect(&mysql,"localhost&quo

  • mysql自动断开连接的问题及解决方法

    Mysql服务器默认的"wait_timeout"是8小时,也就是说一个connection空闲超过8个小时,Mysql将自动断开该 connection.connections如果空闲超过8小时,Mysql将其断开,而DBCP并不知道该connection已经失效,如果这时有 Client请求connection,DBCP将该失效的Connection提供给Client,将会造成上面的异常. mysql配置中my.cnf 的wait_timeout值一定要大于等于连接池种的idle_

  • Asp.net MySql.Data.dll 连接mysql数据库中文乱码解决

    参考链接:http://blog.sina.com.cn/s/blog_5f998b5d0100ec3m.html

  • php无法使用localhost连接mysql的解决方法

    [前言]: 表现如下: 1,可以使用ip连接,localhost无法连接. 2,可能通过命令行mysql -umyname -hlocalhost -p连接数据库,但web方式不行. [分析]: 1,通过2得知,mysql中已存在帐号的localhost记录.说明帐号正常.可以通过查询mysql的user表来确认一下. 2,php使用的是mysql.sock来连接mysql.因此需要确认mysql.sock的位置是否正确.即: #vi /path/to/php.ini找到mysql, mysql

  • Java连接mysql数据操作类

    Java中连接mysql数据库 Java连接MySQL的最新驱动包下载地址 http://www.mysql.com/downloads/connector/j 把jar文件导入到项目里. 1.右击要导入jar包的项目,点properties 2.左边选择java build path,右边选择libraries 3.选择add External jars 4.选择jar包的所在路径 5.确定后就行了 创建DBUtil.java package com.zhuwentao.tools; impo

  • C#连接MYSQL的两种方法

    方法1.通过MySQLDriverCS来连接数据库 先安装:MySQLDriverCS-n-EasyQueryTools-4.0.1-DotNet2.0.exe 下面是我用MySQLDriverCS连接数据库的代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using

  • nodejs连接mysql数据库支持事物封装-mysql模块

    -- 安装模块 npm install mysql  --连接数据库模块 ,基本封装看这里:http://blog.csdn.net/zzwwjjdj1/article/details/51991348 npm install async  --异步流程控制模块 ,async模块介绍:http://blog.csdn.net/zzwwjjdj1/article/details/51857959 -- 封装代码 mysql.js /* nodejs连接mysql数据库支持事物封装 2016年7月2

Tags: