Mysql 一次性執行多條語句的實現
1.mysql資料庫預設情況下,mysql_query()是一次只執行一條語句。
#include "stdafx.h"
#include <mysql.h>
#include <string>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
MYSQL mysql;
mysql_init(&mysql);
MYSQL* pConn = mysql_real_connect(&mysql,"127.0.0.1","root","root","test",3306 ,NULL,0);
if(pConn == NULL){
printf("connect db error!\n");
int n = mysql_errno(&mysql);
string strError = mysql_error(&mysql);
printf("error id: %d ,%s",n,strError.c_str());
return 1;
}
string s = "";
string sql = "";
s = "insert into t1 values(2,'ya');" ;
//執行多條語句
/*for(int i = 0; i < 10;i++){
sql+=s;
}*/
//執行一條語句
sql = s;
int err = mysql_query(&mysql,sql.c_str());
if(err!=0){
printf("execute sql failed.\n");
}
mysql_close(&mysql);
mysql_library_end();
getchar();
return 0;
}
預設情況下一次執行一條語句的結果輸出如下:
一次執行多條語句的結果輸出如下:
2.為了實現mysql_query一次可以執行多條語句:
有兩個方法:
a)在建立資料庫連線時指定
//a)連線時指定
MYSQL* pConn = mysql_real_connect(&mysql,"127.0.0.1","root","root","test",3306,NULL,CLIENT_MULTI_STATEMENTS);
b)要執行多條語句之前指定
MYSQL* pConn = mysql_real_connect(&mysql,"127.0.0.1","root","root","test",3306,NULL,0);
......
//連線時關閉,執行多條語句之前指定
mysql_set_server_option(&mysql,MYSQL_OPTION_MULTI_STATEMENTS_ON);
int err = mysql_query(&mysql,sql.c_str());
mysql_set_server_option(&mysql,MYSQL_OPTION_MULTI_STATEMENTS_ON);
3.完整程式碼:
#include "stdafx.h"
#include <mysql.h>
#include <string>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
MYSQL mysql;
mysql_init(&mysql);
MYSQL* pConn = mysql_real_connect(&mysql,"127.0.0.1","root","root","test",3306,NULL,0);
//a)連線時指定
//MYSQL* pConn = mysql_real_connect(&mysql,"127.0.0.1","root","root","test",3306,NULL,CLIENT_MULTI_STATEMENTS);
if(pConn == NULL){
printf("connect db error!\n");
int n = mysql_errno(&mysql);
string strError = mysql_error(&mysql);
printf("error id: %d ,%s",n,strError.c_str());
return 1;
}
string s = "";
string sql = "";
s = "insert into t1 values(2,'ya');";
//執行多條語句
for(int i = 0; i < 10;i++){
sql+=s;
}
//執行一條語句
//sql = s;
//連線時關閉,執行多條語句之前指定
mysql_set_server_option(&mysql,MYSQL_OPTION_MULTI_STATEMENTS_ON);
int err = mysql_query(&mysql,sql.c_str());
mysql_set_server_option(&mysql,MYSQL_OPTION_MULTI_STATEMENTS_ON);
if(err!=0){
printf("execute sql failed.\n");
}else{
printf("execute sql successed.\n");
}
mysql_close(&mysql);
mysql_library_end();
getchar();
return 0;
}
相關推薦
Mysql 一次性執行多條語句的實現
1.mysql資料庫預設情況下,mysql_query()是一次只執行一條語句。 #include "stdafx.h" #include <mysql.h> #include <string> using namespace std
讓MySQL同時執行多條SQL語句的解決辦法
最近做一個MySQL方面的東西發現了這個問題,就是在一個Statement中執行一條SQL語句的時候可以正確執行,如果同時執行多條,就會報SQL語法錯誤,傷透了腦筋。 經過網上查詢,發現有兩種解決辦法: 1、最簡單的辦法:在MySQL的連線字串中設定allowMultiQueries引數置為true。(只
mybatis 允許一次性執行多條sql語句
新增allowMultiQueries=true jdbcUrl=jdbc:mysql://127.0.0.1:3306/database?useUnicode=true&characterEncoding=utf8&allowMultiQ
Mysql 動態執行多條update語句,帶事務的
create procedure P_CallSql_Tran(IN vi_sql text,in vi_splitchar varchar(20),OUT vo_code VARCHAR(20),out vo_msg text)BEGINDECLARE v_sqltemp
mySQL儲存過程怎樣執行多條語句?
create procedure getResult( in name varchar(30), in classNames varchar(30) ) begin select userName from lxlog where userName=name; select
MyBatis 同時執行多條語句【簡單扼要】
目的:MyBatis 同時執行多條語句 第一步:開啟一個約束 allowMultiQueries=true url: jdbc:mysql://127.0.0.1:3306/tourism?useSSL=false&allowMultiQueries=tr
MySQL 如何利用一條語句實現類似於if-else條件語句的判斷
一、 編寫一條update語句實現商品漲價,具體規則如下 1、99元以內,提價20% 2、100-999元之間,提價10% 3、1000-1999之間,提價5% 4、其他提價2% update goo
在oracle中一次執行多條語句
工作中需要一次執行多條語句,本來想直接使用sql拼接成一個字串進行批處理,原sql如下: String sql = ""; for(int i=0; i<deviceInfo.getDevice_ip().length; i++){
執行一條sql語句update多條記錄實現思路
如果你想更新多行資料,並且每行記錄的各欄位值都是各不一樣,你會怎麼辦呢?本文以一個示例向大家講解下如何實現如標題所示的情況,有此需求的朋友可以瞭解下 通常情況下,我們會使用以下SQL語句來更新欄位值: 複製程式碼 程式碼如下: UP
Mybatis+MySql 一個標籤中執行多條sql語句
版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/cxfly957/article/details/77896590 MySql預設是不支援這種騷操作的,但是並不代表不能實現,只需要在jdbc的配置檔案中
mysql+mybatis 在mybatis一個標籤中,執行多條sql語句
然後在mybatis對映檔案中的標籤中,一般不能執行多條sql,如下: <insert id="addUser" parameterType="User" > insert into t_users (name,password,phone) values (#{na
執行多條SQL語句,實現資料庫事務(不可傳入Sql引數)
《圖書館維護系統》的時候我負責任務管理模組,由於一些業務有些複雜,所以想用儲存過程,但是賈琳師哥說了一堆儲存過程的不好,讓我用sql語句。好吧,用就用吧,但是吧,大家都知道執行多條sql語句,是需要用到事務的(保持資料一致性),儲存過程中加事務我還是會滴
mysql基礎-- 一條請求執行多條SQL語句
最近做一個資料庫初始化工具的時候發現了這個問題,就是在一個Statement中執行一條SQL語句的時候可以正確執行,如果同時執行多條,就會報SQL語法錯誤,傷透了腦筋。 經過網上查詢,發現有兩種解決辦法: 1、最簡單的辦法,在MySQL的連線字串中設定allowMulti
使用jmeter執行多條sql語句
多個 true targe csdn allow 知識 word sta lib 註意2個地方 1、 【JDBC Connection Configuration】 在配置DataBase URL的時候,加上allowMultiQueries=true參數如: jdbc:
[轉]51、430、stm32周期和執行一條語句需要多長時間的問題
執行 動作 設置 時間 狀態 一個 語句 沒有 基本 機器周期:在計算機中,常把一條指令的執行過程劃分為若幹個階段,每一個階段完成一項工作。每一項工作稱為一個基本操作,完成一個基本操作所需要的時間稱為機器周期。8051系列單片機的一個機器周期由6個S周期(狀態周期)組成。一
C#(.net)中的一次連線資料庫執行多條sql語句(兩種方法)
第一種方法: string str="server=.;uid=sa;pwd=111111;database=text_db";//連線字串 SqlConnection SCON = null;//連線物件 SqlCommand SCom=new SqlCommand();/
如何在mybatis中一個insert,delete,update中執行多條SQL語句
一般我們會在applicationContect中這麼配置: <!-- 1. 資料來源 : DriverManagerDataSource --> <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSo
在Oracle中一次執行多條sql語句,結束符很重要
有時我們需要一次性執行多條sql語句,而用來更新的sql是根據實際情況用程式碼拼出來的解決方案是把sql拼成下面這種形式:begin update TB_VG set seq = 1, vessel_id = 'Jin14', vessel_type = 'TRACK' w
Jmeter JDBC request執行多條sql語句
1. 【JDBC Connection Configuration】 在配置DataBase URL的時候,加上allowMultiQueries=true 2. JDBC Request中,sql語句:
同時執行多條sql語句
如果需要在一個檔案中,執行多條sql語句,且要保證效率,看下面 con.setAutoCommit(false);//不能讓他自動提交,否則會影響效率 String sql1="insert into test1 values('test03')"; String sql