MFC通過ODBC連線MySQL資料庫例項

2021-10-16 15:16:24 字數 2676 閱讀 7010

乙個小的mfc通過odbc連線mysql資料庫登陸例項

檔案:n459.com/file/25127180-479633004 訪問密碼:551685

以下內容無關:

-------------------------------------------分割線---------------------------------------------

其實我很早就想寫寫分布式資料庫相關的文章,既是我現在正在學習的,也是我很感興趣的內容。但是談到分布式資料庫,會涉及很多相關的技術細節,等把相關的一些細節寫明白的時候,已經十幾篇文章過去了xd。所以如果想要了解b/b+樹、lsmt、cap等技術細節的,可以翻翻之前的文章。今天我們來聊聊nosql這個概念。

nosql的大概意思

nosql現在非常火,我看過的簡歷裡面十個有九個都寫了熟悉nosql,但是對於nosql背後的細節卻很少有人能講清楚,甚至連nosql裡面的這個no是什麼意思都很多人搞錯。這個no並不是not的意思,而是not only的縮寫。不得不說這個縮寫實在是很坑爹,單從字面上應該沒人能猜出來它是這個意思。而且即使解讀成not only sql,還是有點雲裡霧裡,不是很能精準地get到它的點。

因為sql的英文全寫是structured query language,也就是結構化查詢語言的意思。它可以認為是一門特殊的程式語言,但「不僅僅是sql」是啥意思?的確令人費解,所以我們從字面意思上去理解是不行的,我們需要從實際應用場景去理解。

sql的應用場景是關係型資料庫,比如我們常用的oracle、mysql,這些就是關係型資料庫。我們理解資料庫的時候,往往會從表的結構入手去理解。資料庫當中儲存的是一張張的表,表呢是一行行資料組成的,而每一行資料都有固定的字段。我想這點大家應該非常熟悉,即使沒有學過資料庫或者是像我這樣已經還給老師的,應該或多或少都有印象。

但是為什麼它會被叫做關係型資料庫,而不是表結構資料庫呢?

因為在資料庫當中,關係要比表結構更重要。表結構只是一種形式,而資料庫當中核心的設計理念其實是關係。這也是為什麼我們學習資料庫的時候都需要從er圖開始,而不是上來就講資料庫使用的方法,或者是sql語言的細節。如果你想不明白這句話的含義,也沒有關係,我們先放一放,最後再回到這個話題來。

問題來了,我們知道了常用的sql資料庫是關係型資料庫,那麼nosql代表的資料庫又是什麼呢?

關於nosql概念我至少看到了兩種說法,一種說法是非關係型資料庫,另一種說法是文件型資料庫。我個人在理解的時候覺得這兩種說法都不是非常完美,但相比之下顯然是第二種更好,因為第一種說法完全沒有給我們提供任何資訊。文件型資料庫這裡的文件,並不是我們常規理解的一篇文件的含義,而是指的資料儲存的結構和核心邏輯。

乙個生動的例子

和大多數技術上的概念一樣,nosql也比較晦澀,很難單純用語言將它描述清楚。所以我決定舉乙個生動活潑,大家都耳熟能詳的例子——就是萬能的x寶。

下面是一張x寶當中的商品詳情頁的圖(隨便選取,並非廣告,如有巧合,請付推廣費):

你可能會想出辦法來,這不難啊,我們在img和text以及comment的表裡都加入itemid這個字段,在我們查詢的時候通過itemid進行關聯,不就ok了麼?

第乙個方案的好處是我們不用建新的表,避免了表的冗餘,如果每乙個需求都需要建新的表,顯然對於後續的維護是乙個巨大的負擔。但是它的缺點是我們需要批量修正之前所有的資料,因為之前的資料裡沒有**這個字段。當然你也可以不加這個字段,直接用id區分,但是這是不符合規範的,而且必然會留下安全隱患。

第二個方案的優點是操作簡單,不需要變更之前的資料,安全風險較小,但問題是需要占用新的資源,利用率低,因為有些詳情頁的和頂部的是可以共用的,這樣分開儲存的話就需要儲存多份。

這兩個方案各有優缺點,似乎都還不錯,但坑爹的是它們都有乙個共同的缺點,就是都會增加目前系統和查詢的複雜度。乙個是要增加查詢時候傳入的字段,乙個是要發起額外的查詢,不論選擇哪乙個,都會讓系統越來越複雜。到了後來,乙個使用者請求傳來,會帶動數十個聯動請求,才能拼裝出完整的資料。現在最新版本的x寶的詳情頁商品介紹的部分一律用展示,沒有了文字,也許背後就是受到這個問題的驅動。

文件型資料庫

我們剛才看了關係型資料庫在電商場景下的問題,我們再來看下文件型資料庫在同樣場景下的表現。

和關係型資料庫不同,文件型資料庫儲存的核心是文件。當然這裡的文件指的不是我們通常意義上的文件,而是json或者是xml格式的資料。在目前的nosql資料庫當中,json型別的資料更加常用一些。我們還用剛才詳情頁的例子來看下在nosql資料庫當中,這份資料是如何儲存的:

, ],

「comments」:

}你看,在文件型資料庫當中剛才複雜的、需要經過多次查詢經過一系列處理才可以擰到一起的資料,我們通過itemid一次查詢就可以獲取到了。

除了這些之外,nosql資料庫發展的年限和mysql這些較成熟的關係型資料庫相比要短得多,因此支援的特性相對比較少。

總結通過乙個例子,我們很生動地對比了關係型資料庫和nosql資料庫之間的差別。我們再回到文章開頭的那個問題,為什麼我們在學習資料庫的時候需要先從er圖開始,而不是直接學習資料庫的原理和它的使用方法呢?

我想理解了上面的例子之後,再來看這個問題應該會簡單許多。因為關係型資料庫的核心邏輯就是儲存關係,使用規範、各種技巧和特性,本質上都是圍繞這個核心展開的。如果我們沒有get到這一層就來使用資料庫很容易走偏,很多匪夷所思的操作就是這麼來的,比如有人在資料庫當中儲存前端頁面的**,比如把id拼接成乙個字串來實現儲存多個值等等。這也說明了經典教材上的內容沒有廢話,每乙個章節都有它預期的作用,因此當我們覺得某些內容沒有用的時候,可能並不是教材錯了,只是我們沒有理解到位。

Debian通過ODBC連線Mysql

被網上的原始碼安裝坑了2天,積累了不少經驗,可惜還是未能成功。總結出乙個道理,新事物一定要看官方與非官方的api。下面是在debian系統上使用odbc連線mysql的操作步驟,需要的童鞋請拿走 前言 本次操作基於純淨debian作業系統,因為我才重灌了。1 安裝unixodbc 網上都說原始碼安裝...

C 學習筆記 MFC 連線 ODBC

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

Linux下通過ODBC連線SQL Server

一 測試環境 作業系統 fedora 8 資料庫 sqlserver2000 installed in windows xp professional,資料庫有使用者sa,密碼是syth7777,資料庫檔案是qjkzdb 注意 1 ms從來沒有提供過sqlserver for linux,所以也不要...