日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

c++调用mysql存储过程_C++中ADO调用MySQL存储过程失败,诡异的语法异常,求解中,附源码...

發布時間:2024/9/3 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++调用mysql存储过程_C++中ADO调用MySQL存储过程失败,诡异的语法异常,求解中,附源码... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C++中ADO調用mysql存儲過程失敗,詭異的語法錯誤,求解中,附源碼

不管怎么調整,死活都出現下面的錯誤

C++ADO代碼我實在找不到什么錯誤了,難道是MySQL有什么問題,或者有其他需要注意的地方(類似存儲過程權限之類的,我都看了,我用root連接啊)

navicat 查詢編輯器 執行 call PrGs_GameUser_Login('sdfdsfdsfd') 是沒有問題的

根據下面錯誤信息,難道ADO的CommandText 多了中括號“{”“}”,所以出錯?

執行存儲過程失敗!

CommandText={ call PrGs_GameUser_Login(?) }

Description=You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '{ call PrGs_GameUser_Login('sdfdsfdsfd') }' at line 1

ErrorMessage()=I

Error()=80040e14

Source()=Microsoft OLE DB Provider for ODBC Drivers

存儲過程 PrGs_GameUser_Login 沒啥可說的,就是一個輸入參數,內容是空的

C++源代碼

_ConnectionPtr m_Connection; // 數據庫連接對象

//_RecordsetPtr m_Recordset; // 記錄集對象

_CommandPtr m_Command; // 命令對象

if (m_Connection != NULL || m_Command != NULL/* || m_Recordset != NULL*/)

{

return;

}

try

{

CoInitialize(NULL);

if (FAILED(m_Connection.CreateInstance(__uuidof(Connection))))

{

return;

}

/*if (FAILED(m_Recordset.CreateInstance(__uuidof(Recordset))))

{

return;

}*/

if (FAILED(m_Command.CreateInstance(__uuidof(Command))))

{

return;

}

m_Connection->CursorLocation = adUseClient;

// 把結果集和命令對象關聯起來

//m_Recordset->PutRefSource(m_Command);

//m_Recordset->CursorLocation = adUseClient;

// 只支持存儲過程調用

m_Command->CommandType = adCmdStoredProc;

}

catch (...)

{

return;

}

if (m_Connection->State != adStateClosed)

{

return;

}

if (FAILED(m_Connection->Open("Driver={MySQL ODBC 3.51 Driver};Server=192.168.1.107;Port=3306;Option=4;Database=yxgamedb;Uid=root;Pwd=123456;"

, L"", L"", adConnectUnspecified)))

{

return ;

}

m_Connection->CommandTimeout = 60;

m_Command->CommandTimeout = 60;

m_Command->ActiveConnection = m_Connection;

std::string userName = "sdfdsfdsfd";

//int outParam = 4;

m_Command->CommandText = L"PrGs_GameUser_Login";

_ParameterPtr spParam1 = m_Command->CreateParameter("UserName", adVarChar, adParamInput, 33, (_variant_t)(userName.c_str()));

if (FAILED(m_Command->Parameters->Append(spParam1)))

{

return;

}

/*_ParameterPtr spParam2 = m_Command->CreateParameter("OutParam", adInteger, adParamOutput, 4, (_variant_t)outParam);

if (FAILED(m_Command->Parameters->Append(spParam2)))

{

return;

}*/

try

{

m_Command->Execute(NULL, NULL, adExecuteNoRecords);

}

catch (_com_error &e)

{

PrintInfoLog("執行存儲失敗!/n CommandText=%s/n Description()=%s/n ErrorMessage()=%s/n Error()=%08lx/n Error()=%s",

(LPSTR)m_Command->CommandText, (LPSTR)e.Description(), (LPSTR)e.ErrorMessage(),

e.Error(), (LPSTR)e.Source());

return;

}

------解決方案--------------------

你的MYSQL版本與ODBC的版本是多少? 以前的版本上是有類似這個BUG的。

微信 賞一包辣條吧~

支付寶 賞一聽可樂吧~

總結

以上是生活随笔為你收集整理的c++调用mysql存储过程_C++中ADO调用MySQL存储过程失败,诡异的语法异常,求解中,附源码...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。