MySQL在VC中使用時出現的問題

2021-09-30 02:25:38 字數 3605 閱讀 9445

(1)

出現以下

debug

資訊時:

testnewsql.obj : error lnk2001: unresolved external symbol _mysql_close@4

testnewsql.obj : error lnk2001: unresolved external symbol _mysql_select_db@8

testnewsql.obj : error lnk2001: unresolved external symbol _mysql_real_connect@32

testnewsql.obj : error lnk2001: unresolved external symbol _mysql_init@4

解決方法: 在

vc工程中

project

—>setting

—>link

—>object/library modules

中新增:

libmysql.lib

,然後編譯就可以通過了

(2)如果是在其他檔案中引用的,在

tools

—>options

—>directories

—>show directories for :include files

對應的專案中包含這些標頭檔案。

(3)編譯通過後,在執行時彈出對話方塊找不到

libmysql.dll

檔案,在所安裝的

mysql

目錄下的

lib/debug

目錄下可以找到該檔案。將其複製到編譯好的

release/debug

目錄下即可。或是通過「控制面板」—

>

「系統」

—>

「高階」—

>

「環境變數」—

>

「系統變數」—

>

「paht

」中新增

d:/mysql/lib/debug

。注:d:/mysql

為筆者安裝的

mysql

目錄。

(4)如果出現以下編譯問題

error c2146: syntax error : missing ';' before identifier 'fd' 這是

mysql_com.h

**現的問題。如果將這句宣告注釋掉,下面會出現這個編譯問題:

error c2065: 'socket' : undeclared identifier

可以將int my_connect(my_socket s, const struct sockaddr *name, unsigned int namelen,unsigned int timeout);

該函式注釋掉。

則編譯可以通過。

出現的原因分析:在用

vc嚮導生成文件

/檢視時,在第四步中應該選擇

windows sockets

。不然編譯時就會出現上述問題。

最好的解決方式是在

stdafx.h

檔案中新增

#include

,即可解決上述問題。

(5)如果連線資料庫時,出現不能連線的情況時,則應該將所在網路斷開。出現問題的原因同上。

如果是資料庫連線錯誤的話,則因為在

mysql *stdcall mysql_real_connect(mysql *mysql, const char *host,const char *user,const char *passwd,const char *db,unsigned int port,const char *unix_socket,unsigned int clientflag); 對於

passwd

應該設定為

null

。對於user

可以隨意設定。

原因暫時不清楚。

上述情況下只能對使用者使用「

root

」和,就可以連線資料庫了。

a.

如果以其他使用者的身份,則需要新增相應的使用者和密碼。

步驟一:在命令列方式下執行

mysql

格式:mysql -h

主機位址

-u使用者名稱-p

使用者密碼

例如:連線到本機上的

mysql。

首先在開啟

dos視窗,然後進入目錄

mysqlbin

,再鍵入命令

mysql -uroot -p

,回車後提示你輸密碼,如果剛安裝好

mysql

,超級使用者

root

是沒有密碼的,故直接回車即可進入到

mysql

中了,mysql

的提示符是:

mysql> 2

、例2:連線到遠端主機上的

mysql

。假設遠端主機的

ip為:

110.110.110.110

,使用者名為

root,

密碼為abcd123

。則鍵入以下命令:

mysql -h110.110.110.110 -uroot -pabcd123

步驟二:增加新使用者

格式:

grant select on資料庫

.* to使用者名稱

@登入主機

identified by "密碼

"例1

、增加乙個使用者

test1

密碼為abc

,讓他可以在任何主機上登入,並對所有資料庫有查詢、插入、修改、刪除的許可權。首先用以

root

使用者連入

mysql

,然後鍵入以下命令:

grant select,insert,update,delete on *.* to test1@"%" identified by "abc"; 但例

1增加的使用者是十分危險的,你想如某個人知道

test1

的密碼,那麼他就可以在

internet

上的任何一台電腦上登入你的

mysql

資料庫並對你的資料可以為所欲為了,解決辦法見例2。

例2、增加乙個使用者

test2

密碼為abc,

讓他只可以在

localhost

上登入,並可以對資料庫

mydb

進行查詢、插入、修改、刪除的操作(

localhost

指本地主機,即

mysql

資料庫所在的那台主機),這樣使用者即使用知道

test2

的密碼,他也無法從

internet

上直接訪問資料庫,只能通過

mysql

主機上的

web頁來訪問了。

grant select,insert,update,delete on mydb.* to test2@localhost identified by "abc"

VC中使用STL出現的警告

當在使用stl時,vc有時會提出類似以下的警告 compiling.test.cpp c windows desktop test test.cpp 13 warning c4786 std reverse iterator,std allocator const std basic string,...

在VC中使用CCheckListBox

在軟體應用中經常會遇到需要複選功能的列表框。類cchecklistbox實現了windows複選列表框。複選列表框顯示項的乙個列表,例如檔名列表。列表中的每項都有乙個核取方塊,方便使用。但是vc的控 件列表中並新增cchecklistbox,因此在使用cchecklistbox還要進行一些手動設定,...

在VC中使用Debug

選定debug編譯選項 build set active configuration win32 debug 或者在build工具欄上的listbox中選擇debug。debug定義了 debug巨集,而release定義了ndebug巨集。先按f12編譯browse資訊 這樣編譯後可以查到變數定義...