MFC 程式自啟動ODBC連線Mysql報錯

2021-10-03 19:51:48 字數 1414 閱讀 4751

在做程式隨機自啟動時,經常會遇到odbc資料來源找不到,彈出乙個對話方塊,讓手動指定資料來源,同時程式崩潰的介面。

於是在網上找解決方案,但是不知道是關鍵字不對還是之前沒人這麼做過,沒有搜到。

之後看到通過try catch來捕獲異常的方法,當時覺得可以解決我的問題了,但是應用到程式後,還是會出現同樣的錯誤,**大致如下,主要是也是看中了cdatabase::noodbcdialog這個列舉值,解釋說不會彈出選擇資料來源的對話方塊。

//embed a cdatabase object

//in your document class

cdatabase m_dbcust( );

//connect the object to a

//read-only data source where

//the odbc connection dialog box

//will always remain hidden

trycatch(cdbexception e)

採用了這段**後,在自啟動的時候還是會彈出選擇資料來源的對話方塊。之後想到是不是因為mysql沒有啟動的原因呢,之後在**中加了讀取mysql服務的狀態。通過enumservicesstatus遍歷,如果服務名是mysql,則判斷狀態是否是啟動,如果沒有啟動,則等待一秒鐘後繼續讀,直到讀到mysql啟動為止。

本以為上面的方法可以解決問題了,但是很悲催,問題依然沒解決,問題還是在cdatabase.open這句話上,一到這裡就彈出對話方塊。之後判斷應該是odbc服務沒有起來導致的。之後新增通過讀取odbc資料來源,直到讀到為止來判斷是否可以進行資料庫操作,問題解決。

#include //needed for cstringlist mfc class.

#include "odbcinst.h"

#include "sql.h"

#include "sqlext.h"

// note: in 16-bit visual c++ link with odbcinst.lib

// in 32-bit visual c++ 2.x link with odbccp32.lib

// in 32-bit visual c++ 4.x no need to change link options

#define max_dsn_length 30

#define max_dsn_desc_length 300

bool getodbcdatasourcenames(cstringlist * plist)

sqlfreeenv(henv);

if (retcode==sql_error)

return false;

return true;

}

C 學習筆記 MFC 連線 ODBC

處理特殊字元 插入的文字中,如果有單引號,就會報錯。如果是自己寫的文字則需要在單引號前加上轉義字元,因為odbc需要進行一次轉移。如 strquery.format insert into doc text values s text.c str 但是如果是拼接的字元則需要進行兩次轉義,因為拼接的時...

開機自啟動程式

昨天做了個brew開機自啟動的demo,在此記下該程式的要點。brew平台可以做到開機就自啟動brew 應用,這需要在mif中做如下設定 增加乙個notification aeeclsid shell 設定notififer aeeclsid shell 設定mask nmask shell ini...

程式自啟動位置

如果系統啟動時自動載入的程式過多,會造成啟動速度緩慢,而很多病毒或者木馬也是在系統啟動時自動載入的。所以了解怎樣在windows中查詢自啟動程式是非常重要的。一 在 啟動 資料夾中尋找 啟動 資料夾一般位於 系統碟符 documents and settings 使用者名稱 開始選單 程式 啟動 目...