mysql數(shù)據(jù)源名怎么查 mysql怎么查看數(shù)據(jù)庫(kù)名稱(chēng)

mfc中查詢(xún)MySQL的數(shù)據(jù)的代碼

MFC程序訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)不是那么簡(jiǎn)單的,需要很多初始化代碼,建立ADO連接并使用接口。

成都創(chuàng)新互聯(lián)公司-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性?xún)r(jià)比硯山網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式硯山網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋硯山地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴(lài)。

網(wǎng)上很多相關(guān)完整資料,搜“VC ADO MYSQL”,灰常多。

下面是一個(gè)比較精煉的描述:

1、應(yīng)用程序的stdafx.h頭文件中(也可以在其他合適的地方)包含如下語(yǔ)句。

#import "C://program files//common files//system//ado//msado15.dll"

no_namespace rename ("EOF", "adoEOF")

2、鏈接數(shù)據(jù)庫(kù)

CoInitialize(NULL);

//初始化Com組件

_ConnectionPtr

conPtr; //數(shù)據(jù)庫(kù)鏈接指針

//

conPtr.CreateInstance("ADODB.Connection");

//Connection用于與數(shù)據(jù)庫(kù)服務(wù)器的鏈接

conPtr.CreateInstance(__uuidof(Connection));

//Connection用于與數(shù)據(jù)庫(kù)服務(wù)器的鏈接另一種方式

try

{

conPtr-ConnectionTimeout = 5; //設(shè)置連接時(shí)間

//

MySqlTest為數(shù)據(jù)源名 localhost表示本地

root表示用戶(hù)名 sa表示密碼

//鏈接方式1,使用這種方式鏈接時(shí)要注意在設(shè)置數(shù)據(jù)源時(shí)一定要選擇一個(gè)數(shù)據(jù)庫(kù)

//conPtr-Open("DSN=MySqlTest;server=localhost;","root","sa",adModeUnknown);///連接MySql數(shù)據(jù)庫(kù)(測(cè)試成功)

//鏈接方式2采用這種方式鏈接時(shí)在創(chuàng)建數(shù)據(jù)源時(shí)沒(méi)有必要選擇一個(gè)數(shù)據(jù)庫(kù) conPtr-Open("DSN=MySqlTest;server=localhost;database=test;","root","sa",adModeUnknown);///連接MySql數(shù)據(jù)庫(kù)(測(cè)試成功)

}

catch(_com_error e) //捕捉異常

{

AfxMessageBox(e.ErrorMessage());

}

CoUninitialize(); //釋放com組件//不知是否有必要

3、訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)

_RecordsetPtr recordPtr;//數(shù)據(jù)集指針

recordPtr.CreateInstance(__uuidof(Recordset));

CString

cmdStr=_T("select name,stuno from

student");//student為表名 該表中有兩個(gè)字段name(字符型)stuno(int型)

try

{

recordPtr-Open(_variant_t(cmdStr),

conPtr.GetInterfacePtr(),

adOpenDynamic,

adLockOptimistic,

adCmdText);

}

catch

(_com_error e)

{

AfxMessageBox(e.Description());

}

while

(!(recordPtr-adoEOF))

{//獲取記錄

CString

name=(CString)recordPtr-GetCollect(_variant_t("name")).bstrVal;

int

no=recordPtr-GetCollect(_variant_t("stuno")).intVal;

recordPtr-MoveNext();

}

recordPtr-Close();//關(guān)閉記錄集

recordPtr.Release();//釋放空間

conPtr-Close();//關(guān)閉連接

conPtr.Release();//釋放空間

如何查看mysql數(shù)據(jù)庫(kù)的引擎

一般情況下,mysql會(huì)默認(rèn)提供多種存儲(chǔ)引擎,你可以通過(guò)下面的查看:

看你的mysql現(xiàn)在已提供什么存儲(chǔ)引擎:

mysql show engines;

看你的mysql當(dāng)前默認(rèn)的存儲(chǔ)引擎:

mysql show variables like '%storage_engine%';

你要看某個(gè)表用了什么引擎(在顯示結(jié)果里參數(shù)engine后面的就表示該表當(dāng)前用的存儲(chǔ)引擎):

mysql show create table 表名;

MySQL數(shù)據(jù)庫(kù)引擎詳解

作為Java程序員,MySQL數(shù)據(jù)庫(kù)大家平時(shí)應(yīng)該都沒(méi)少使用吧,對(duì)MySQL數(shù)據(jù)庫(kù)的引擎應(yīng)該也有所了解,這篇文章就讓我詳細(xì)的說(shuō)說(shuō)MySQL數(shù)據(jù)庫(kù)的Innodb和MyIASM兩種引擎以及其索引結(jié)構(gòu)。也來(lái)鞏固一下自己對(duì)這塊知識(shí)的掌握。

Innodb引擎

Innodb引擎提供了對(duì)數(shù)據(jù)庫(kù)ACID事務(wù)的支持,并且實(shí)現(xiàn)了SQL標(biāo)準(zhǔn)的四種隔離級(jí)別,關(guān)于數(shù)據(jù)庫(kù)事務(wù)與其隔離級(jí)別的內(nèi)容請(qǐng)見(jiàn)數(shù)據(jù)庫(kù)事務(wù)與其隔

離級(jí)別這篇文章。該引擎還提供了行級(jí)鎖和外鍵約束,它的設(shè)計(jì)目標(biāo)是處理大容量數(shù)據(jù)庫(kù)系統(tǒng),它本身其實(shí)就是基于MySQL后臺(tái)的完整數(shù)據(jù)庫(kù)系統(tǒng),MySQL

運(yùn)行時(shí)Innodb會(huì)在內(nèi)存中建立緩沖池,用于緩沖數(shù)據(jù)和索引。但是該引擎不支持FULLTEXT類(lèi)型的索引,而且它沒(méi)有保存表的行數(shù),當(dāng)SELECT

COUNT(*) FROM

TABLE時(shí)需要掃描全表。當(dāng)需要使用數(shù)據(jù)庫(kù)事務(wù)時(shí),該引擎當(dāng)然是首選。由于鎖的粒度更小,寫(xiě)操作不會(huì)鎖定全表,所以在并發(fā)較高時(shí),使用Innodb引擎

會(huì)提升效率。但是使用行級(jí)鎖也不是絕對(duì)的,如果在執(zhí)行一個(gè)SQL語(yǔ)句時(shí)MySQL不能確定要掃描的范圍,InnoDB表同樣會(huì)鎖全表。

MyIASM引擎

MyIASM是MySQL默認(rèn)的引擎,但是它沒(méi)有提供對(duì)數(shù)據(jù)庫(kù)事務(wù)的支持,也不支持行級(jí)鎖和外鍵,因此當(dāng)INSERT(插入)或UPDATE(更

新)數(shù)據(jù)時(shí)即寫(xiě)操作需要鎖定整個(gè)表,效率便會(huì)低一些。不過(guò)和Innodb不同,MyIASM中存儲(chǔ)了表的行數(shù),于是SELECT COUNT(*)

FROM

TABLE時(shí)只需要直接讀取已經(jīng)保存好的值而不需要進(jìn)行全表掃描。如果表的讀操作遠(yuǎn)遠(yuǎn)多于寫(xiě)操作且不需要數(shù)據(jù)庫(kù)事務(wù)的支持,那么MyIASM也是很好的選

擇。

兩種引擎的選擇

大尺寸的數(shù)據(jù)集趨向于選擇InnoDB引擎,因?yàn)樗С质聞?wù)處理和故障恢復(fù)。數(shù)據(jù)庫(kù)的大小決定了故障恢復(fù)的時(shí)間長(zhǎng)短,InnoDB可以利用事務(wù)日志

進(jìn)行數(shù)據(jù)恢復(fù),這會(huì)比較快。主鍵查詢(xún)?cè)贗nnoDB引擎下也會(huì)相當(dāng)快,不過(guò)需要注意的是如果主鍵太長(zhǎng)也會(huì)導(dǎo)致性能問(wèn)題,關(guān)于這個(gè)問(wèn)題我會(huì)在下文中講到。大

批的INSERT語(yǔ)句(在每個(gè)INSERT語(yǔ)句中寫(xiě)入多行,批量插入)在MyISAM下會(huì)快一些,但是UPDATE語(yǔ)句在InnoDB下則會(huì)更快一些,尤

其是在并發(fā)量大的時(shí)候。

Index——索引

索引(Index)是幫助MySQL高效獲取數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。MyIASM和Innodb都使用了樹(shù)這種數(shù)據(jù)結(jié)構(gòu)做為索引,關(guān)于樹(shù)我也曾經(jīng)寫(xiě)過(guò)一篇文章樹(shù)是一種偉大的數(shù)據(jù)結(jié)構(gòu),只是自己的理解,有興趣的朋友可以去閱讀。下面我接著講這兩種引擎使用的索引結(jié)構(gòu),講到這里,首先應(yīng)該談一下B-Tree和B+Tree。

B-Tree和B+Tree

B+Tree是B-Tree的變種,那么我就先講B-Tree吧,相信大家都知道紅黑樹(shù),這是我前段時(shí)間學(xué)《算法》一書(shū)時(shí),實(shí)現(xiàn)的一顆紅黑樹(shù),大家

可以參考。其實(shí)紅黑樹(shù)類(lèi)似2,3-查找樹(shù),這種樹(shù)既有2叉結(jié)點(diǎn)又有3叉結(jié)點(diǎn)。B-Tree也與之類(lèi)似,它的每個(gè)結(jié)點(diǎn)做多可以有d個(gè)分支(叉),d稱(chēng)為B-

Tree的度,如下圖所示,它的每個(gè)結(jié)點(diǎn)可以有4個(gè)元素,5個(gè)分支,于是它的度為5。B-Tree中的元素是有序的,比如圖中元素7左邊的指針指向的結(jié)點(diǎn)

中的元素都小于7,而元素7和16之間的指針指向的結(jié)點(diǎn)中的元素都處于7和16之間,正是滿(mǎn)足這樣的關(guān)系,才能高效的查找:首先從根節(jié)點(diǎn)進(jìn)行二分查找,找

到就返回對(duì)應(yīng)的值,否則就進(jìn)入相應(yīng)的區(qū)間結(jié)點(diǎn)遞歸的查找,直到找到對(duì)應(yīng)的元素或找到null指針,找到null指針則表示查找失敗。這個(gè)查找是十分高效

的,其時(shí)間復(fù)雜度為O(logN)(以d為底,當(dāng)d很大時(shí),樹(shù)的高度就很低),因?yàn)槊看螜z索最多只需要檢索樹(shù)高h(yuǎn)個(gè)結(jié)點(diǎn)。

接下來(lái)就該講B+Tree了,它是B-Tree的變種,如下面兩張圖所示:

vcHLx/i85LLp0a/Qp8LKoaM8L3A+DQo8aDMgaWQ9"myisam引擎的索引結(jié)構(gòu)"MyISAM引擎的索引結(jié)構(gòu)

MyISAM引擎的索引結(jié)構(gòu)為B+Tree,其中B+Tree的數(shù)據(jù)域存儲(chǔ)的內(nèi)容為實(shí)際數(shù)據(jù)的地址,也就是說(shuō)它的索引和實(shí)際的數(shù)據(jù)是分開(kāi)的,只不過(guò)是用索引指向了實(shí)際的數(shù)據(jù),這種索引就是所謂的非聚集索引。

Innodb引擎的索引結(jié)構(gòu)

MyISAM引擎的索引結(jié)構(gòu)同樣也是B+Tree,但是Innodb的索引文件本身就是數(shù)據(jù)文件,即B+Tree的數(shù)據(jù)域存儲(chǔ)的就是實(shí)際的數(shù)據(jù),這種索引就是聚集索引。這個(gè)索引的key就是數(shù)據(jù)表的主鍵,因此InnoDB表數(shù)據(jù)文件本身就是主索引。

因?yàn)镮nnoDB的數(shù)據(jù)文件本身要按主鍵聚集,所以InnoDB要求表必須有主鍵(MyISAM可以沒(méi)有),如果沒(méi)有顯式指定,則MySQL系統(tǒng)會(huì)自動(dòng)選擇一個(gè)可以唯一標(biāo)識(shí)數(shù)據(jù)記錄的列作為主鍵,如果不存在這種列,則MySQL自動(dòng)為InnoDB表生成一個(gè)隱含字段作為主鍵,這個(gè)字段長(zhǎng)度為6個(gè)字節(jié),類(lèi)型為長(zhǎng)整形。

并且和MyISAM不同,InnoDB的輔助索引數(shù)據(jù)域存儲(chǔ)的也是相應(yīng)記錄主鍵的值而不是地址,所以當(dāng)以輔助索引查找時(shí),會(huì)先根據(jù)輔助索引找到主

鍵,再根據(jù)主鍵索引找到實(shí)際的數(shù)據(jù)。所以Innodb不建議使用過(guò)長(zhǎng)的主鍵,否則會(huì)使輔助索引變得過(guò)大。建議使用自增的字段作為主鍵,這樣B+Tree的

每一個(gè)結(jié)點(diǎn)都會(huì)被順序的填滿(mǎn),而不會(huì)頻繁的分裂調(diào)整,會(huì)有效的提升插入數(shù)據(jù)的效率。

如何通過(guò)Excel查詢(xún)MySQL數(shù)據(jù)庫(kù)

MySql作為最受歡迎的開(kāi)源數(shù)據(jù)庫(kù)之一在數(shù)據(jù)存儲(chǔ)與管理方面要大大強(qiáng)于Excel的同門(mén)兄弟Access。因此,把mysql做為后端數(shù)據(jù)存儲(chǔ)工具與前端數(shù)據(jù)分析工具Excel來(lái)配合使用也不失為一種有效的解決方案。下面我們將介紹mysql數(shù)據(jù)庫(kù)與Excel鏈接的三種主要形式。

①M(fèi)ySqlforExcel——mysql的Excel插件

MySql數(shù)據(jù)庫(kù)專(zhuān)門(mén)為Excel準(zhǔn)備了一個(gè)數(shù)據(jù)操作插件,可以方便地對(duì)數(shù)據(jù)進(jìn)行導(dǎo)入導(dǎo)出擴(kuò)展和編輯。本插件安裝后,在Excel的“數(shù)據(jù)”菜單會(huì)出現(xiàn)一個(gè)如下所示的菜單項(xiàng),第一次點(diǎn)擊它需要對(duì)mysql數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)用戶(hù)名、密碼及數(shù)據(jù)庫(kù)名稱(chēng)等做一個(gè)設(shè)定,以后就可以隨時(shí)讀取和操作數(shù)據(jù)庫(kù)中的數(shù)據(jù)了。如果安裝完后沒(méi)有出現(xiàn)在Excel菜單,則可能需要到com加載項(xiàng)中去勾選一下。下載地址:。這種方法也是最簡(jiǎn)單的一種連接方法,近乎于傻瓜式鏈接。

②MSQuery鏈接

MSQuery鏈接需要先安裝mysqlODBC驅(qū)動(dòng)(下載地址在此:)。驅(qū)動(dòng)安裝完成后,先要到windows控制面板—管理工具——“ODBC數(shù)據(jù)源”中進(jìn)行用戶(hù)或系統(tǒng)數(shù)據(jù)源(DSN)設(shè)置。

點(diǎn)擊“添加”,在彈出的驅(qū)動(dòng)列表中,選擇MySqlODBC驅(qū)動(dòng),然后點(diǎn)擊“完成”。

這時(shí)會(huì)彈出一個(gè)對(duì)話(huà)框,讓你配置mysql數(shù)據(jù)源的一些參數(shù):數(shù)據(jù)源名稱(chēng)——隨便,描述——隨便,TCP/IP服務(wù)器——如果在本機(jī)就是localhost:3306,如果不是則需正確輸入你的mysql賬戶(hù)的IP地址及端口,下面就是用戶(hù)名、密碼以及你要訪(fǎng)問(wèn)的數(shù)據(jù)庫(kù)名稱(chēng)。一切配置完畢后可以點(diǎn)擊Test進(jìn)行測(cè)試,測(cè)試連接成功后,你會(huì)看到mysql數(shù)據(jù)源已經(jīng)添加到用戶(hù)數(shù)據(jù)源列表。

接下來(lái),我們打開(kāi)MSQuery,這時(shí)新添加的數(shù)據(jù)源已經(jīng)出現(xiàn)在了數(shù)據(jù)庫(kù)列表中,我們只需選中mysql數(shù)據(jù)源,點(diǎn)擊確定,就可以對(duì)數(shù)據(jù)庫(kù)中表和字段進(jìn)行查詢(xún)操作了。

③PowerQuery鏈接

PowerQuery支持當(dāng)今市場(chǎng)上所有主流數(shù)據(jù)庫(kù)的直連,mysql當(dāng)然也不在話(huà)下。由于前面已經(jīng)設(shè)置過(guò)了數(shù)據(jù)源驅(qū)動(dòng),因此這里相對(duì)也就很簡(jiǎn)單。打開(kāi)PowerQuery—獲取外部數(shù)據(jù)—來(lái)自數(shù)據(jù)庫(kù)—來(lái)自mysql數(shù)據(jù)庫(kù)。

在彈出的界面中輸入mysql服務(wù)器的地址和端口,下面輸入你要訪(fǎng)問(wèn)的數(shù)據(jù)庫(kù)名稱(chēng)(本例中是mysql自帶數(shù)據(jù)庫(kù)sakila),確認(rèn)后就會(huì)出現(xiàn)相關(guān)數(shù)據(jù)表導(dǎo)航界面,就可以對(duì)數(shù)據(jù)進(jìn)行操作了。數(shù)據(jù)連接完成。

當(dāng)前題目:mysql數(shù)據(jù)源名怎么查 mysql怎么查看數(shù)據(jù)庫(kù)名稱(chēng)
網(wǎng)頁(yè)路徑:http://bm7419.com/article14/ddcddde.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、網(wǎng)站策劃、做網(wǎng)站、網(wǎng)站維護(hù)、網(wǎng)站營(yíng)銷(xiāo)、云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)