c++ 連線mysql例項
#include
#include
#include
#include "C:\Program Files\MySQL\MySQL Server 5.1\include\mysql.h"
#define HOSTADDRESS "127.0.0.1"
#define USER "test0"
#define PWD "test"
#define DBNAME "log"
using namespace std;
#pragma comment(lib ,"C:/Program Files/MySQL/MySQL Server 5.1/lib/opt/libmysql.lib")
void _SystemTime()
{
SYSTEMTIME systm ;
GetLocalTime(&systm);
cout << systm.wYear << "-" << systm.wMonth << "-"<< systm.wDay << " " << systm.wHour << ":" << systm.wMinute << ":" << systm.wSecond << " " << systm.wMilliseconds ;
}
class cMysqlConnect
{
private:
MYSQL * m_connmysql;
string m_err;
public:
cMysqlConnect(const std::string &host ,const std::string &user ,const std::string &password ,const std::string &dbname ,unsigned int port);
~cMysqlConnect();
MYSQL * GetConnect();
void disconnect(MYSQL *m_connmysql);
const std::string What();
};
cMysqlConnect::cMysqlConnect(const std::string &host ,const std::string &user ,const std::string &password ,const std::string &dbname ,unsigned int port = MYSQL_PORT):m_connmysql(NULL)
{
if((m_connmysql = mysql_init(m_connmysql)) == NULL)
return ;
if(NULL == mysql_real_connect(m_connmysql ,host.c_str() ,user.c_str() ,password.c_str() ,dbname.c_str() ,port ,NULL ,0))
{
m_err = mysql_error(m_connmysql);
return ;
}
}
void cMysqlConnect::disconnect(MYSQL *m_connmysql)
{
mysql_close(m_connmysql);
}
cMysqlConnect::~cMysqlConnect()
{
if(m_connmysql)
{
mysql_close(m_connmysql) ;
m_connmysql = NULL ;
}
}
MYSQL * cMysqlConnect::GetConnect()
{
if(m_connmysql == NULL)
{
cout << "connect fail\n" ;
}
return m_connmysql ;
}
const std::string cMysqlConnect::What()
{
return mysql_error(m_connmysql) ;
}
int main(int argc ,char * argv[])
{
cMysqlConnect *myconn = NULL ;
int i = 0 ;
//while(i<5000){
//連線資料庫
if(argc == 1)
{
myconn = new cMysqlConnect(HOSTADDRESS ,USER ,PWD ,DBNAME ,MYSQL_PORT) ;
if(myconn == NULL)
{
std::cout << "allocate memory exception \n" ;
return -1 ;
}
if(myconn->GetConnect() == NULL)
{
std::cout << "connect database fail" << endl <
return -1 ;
}
}
else if(argc == 6)
{
myconn = new cMysqlConnect(argv[1] ,argv[2] ,argv[3] ,argv[4] ,atoi(argv[5])) ;
if(myconn == NULL)
{
std::cout << "allocate memory exception \n" ;
return -1;
}
if(myconn->GetConnect() == NULL)
{
std::cout << "connect database fail" << endl <
return -1 ;
}
}
else
{
std::cout << "run parameter error\n" ;
return -1;
}
MYSQL *mydata = myconn->GetConnect() ;
//mysql_close(mydata) ;
//i++ ;
//}
//std::string s_sql = "";
//刪除資料表
std::string s_sql = "drop table IF EXISTS cc" ;
if(mysql_query(mydata ,s_sql.c_str()) != 0)
std::cout << "drop table fail" << endl << mysql_error(mydata) << endl ;
else
cout << "drop table success" << endl ;
//建立資料表
s_sql = "CREATE TABLE cc(" ;
s_sql += "id INT NOT NULL AUTO_INCREMENT ," ;
s_sql += "c1 varchar(30) DEFAULT NULL ," ;
s_sql += "cre_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ," ;
s_sql += "PRIMARY KEY(id) ,KEY(c1))ENGINE = MYISAM " ;
//PARTITION BY RANGE (id)(PARTITION p0 VALUES LESS THAN (50000) ENGINE = MYISAM ,PARTITION p1 VALUES LESS THAN (100000) ,PARTITION p2 VALUES LESS THAN (150000) ,PARTITION p3 VALUES LESS THAN (200000) ,PARTITION p4 VALUES LESS THAN (250000) ,PARTITION p5 VALUES LESS THAN (300000) ,PARTITION p6 VALUES LESS THAN (350000) ,PARTITION p7 VALUES LESS THAN (400000) ,PARTITION p8 VALUES LESS THAN (450000) ,PARTITION p9 VALUES LESS THAN (500000) ,PARTITION p10 VALUES LESS THAN MAXVALUE)
if(mysql_query(mydata ,s_sql.c_str()) != 0)
{
cout << "create table fail :" << s_sql << mysql_error(mydata) <
return -1 ;
}
else
cout << "create table success\n" ;
i = mysql_dump_debug_info(mydata) ;
i = 0 ;
//插入資料
//針對事務性的儲存引擎。設定為不自動提交,可以有助於提高插入的速度,減少I/O
mysql_autocommit(mydata ,1) ;
_SystemTime();
cout << endl;
while(i < 500)
{
char s_str[100];
sprintf(s_str,"%d",i);
s_sql = s_str;
s_sql = "INSERT INTO totalcharlog(amount ,logtime ,flag) VALUES(11,now() ,'1')";
if(mysql_query(mydata ,s_sql.c_str()) != 0)
{
cout << "insert fail ,error msg :" << myconn->What().c_str() << s_sql <
myconn->disconnect(mydata);
myconn = new cMysqlConnect(HOSTADDRESS ,USER ,PWD ,DBNAME ,MYSQL_PORT) ;
mydata = myconn->GetConnect() ;
return -1 ;
}
Sleep(10) ;
i++ ;
}
_SystemTime();
/*s_sql = "INSERT INTO cb VALUES(2 ,3)" ;
if(mysql_query(mydata ,s_sql.c_str()) != 0)
{
cout << "Insert cb fail ,err msg :" << myconn->What().c_str() << endl ;
}*/
cout << "Autoincrement value: " << mysql_insert_id(mydata) << endl ;
mysql_commit(mydata) ;
//查詢資料表
s_sql = "SELECT SQL_NO_CACHE * FROM cb" ;
/*while(i < 50000)
{*/
if(mysql_query(mydata ,s_sql.c_str()) != 0)
{
cout << "exec fail\n" ;
//return -1;
}
// mysql_close(mydata) ;
MYSQL_RES *result = mysql_store_result(mydata) ; MYSQL_FIELD *fields = NULL ; //一次讀取每條記錄 //從記錄的某行開始讀取直到最後一行,相當於limit,作用是修改result的結果集 while((currrow = mysql_fetch_row(result)) != NULL)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12309491/viewspace-671400/,如需轉載,請註明出處,否則將追究法律責任。
//取得總記錄數
long rowcount = mysql_num_rows(result) ;
cout << "exec sql:" << s_sql.c_str() << ",row count: " <
//取得各欄位名
for(int i = 0 ;fields = mysql_fetch_field(result) ;++i)
cout << fields->flags << "\t\t" ;
cout << endl;
MYSQL_ROW currrow = NULL ;
mysql_data_seek(result ,1) ;
{
//讀該行的記錄
for(int i = 0 ; i < mysql_num_fields(result) ;++i)
cout << (currrow[i]?currrow[i]:"NULL") << "\t" ;
cout << endl ;
}
mysql_free_result(result);
/*i++ ;
}*/
//獲取Mysql客戶端資訊
cout << mysql_get_server_info(mydata)<< endl ;
system("pause") ;
return 1 ;
}
相關文章
- 例項解析外連線 內連線 自連線 全連線
- JDBC連線MySQL資料庫的方法和例項JDBCMySql資料庫
- 連線雲MariaDB例項
- 多個mapreduce連線例項
- 本地SSH方式連線例項
- mysql設定指定ip遠端訪問連線例項MySql
- 2.4.7 Step 6: 連線到例項
- Luat例項教程:tcp短連線TCP
- Mysql 左右連線舉例說明MySql
- javascript陣列連線程式碼例項JavaScript陣列線程
- 從客戶端連線ASM例項客戶端ASM
- sql 連線查詢例項(left join)三表連線查詢SQL
- JDBC連線自定義sqlserver資料庫例項名(多個例項)JDBCSQLServer資料庫
- jdbc根據例項名 連線 sql serverJDBCSQLServer
- 無法連線windows例項的問題排查Windows
- 去掉連結a的虛線框程式碼例項
- 如何看例項的歷史最大連線數?
- python連結mysql查詢資料例項PythonMySql
- 設計模式使用例項(5)——建造者模式例項之資料庫連線管理設計模式資料庫
- 連線RAC資料庫中單個例項(一)資料庫
- SignalR2 永久連線簡單例項1SignalR單例
- 連線RAC資料庫中單個例項(二)資料庫
- Java連線各種資料庫的例項 (轉)Java資料庫
- JDBC連線MySQL資料庫及演示樣例JDBCMySql資料庫
- [C++]C++程式設計例項C++程式設計
- C語言連線mysql簡單查詢例項入門-mysql_init,mysql_real_connect,mysql_query,mysql_close等C語言MySql
- 安裝完oracle後第一次連線都連線到空閒例項Oracle
- python 連線mongodb實現增刪改查例項PythonMongoDB
- oracle11g使用pl/sql developer連線asm例項OracleSQLDeveloperASM
- oracle 11gR2 配置goldengate連線asm例項OracleGoASM
- 設定到相同SID仍無法連線例項
- oracle10g 使用pl/sql developer連線asm例項OracleSQLDeveloperASM
- mysql 連線時通時不通解決一例MySql
- windows10 vs2017 C++連線MySQLWindowsC++MySql
- MySQL 優化例項MySql優化
- MYSQL語法:左連線、右連線、內連線、全外連線MySql
- GO 連線 MySQLGoMySql
- JDBC連線mysqlJDBCMySql