顯示具有 資料庫 標籤的文章。 顯示所有文章
顯示具有 資料庫 標籤的文章。 顯示所有文章

ODBC with MFC sample code

沒有留言:
不囉嗦,直接看程式
#include <afxdb.h>

//略過超多無關ODBC的程式碼
void CKXdbtestDlg::OnButton1() //在此寫在一個button做測試,可以用其它訊息觸發
{
    //宣告資料庫初始化(指定資料庫及帳密)
    //打開(table, 欄位 = *, R/W);  ??

    CDatabase* kxDB = new CDatabase();  //資料庫本體物件
    kxDB->OpenEx( _T("DSN=MySQL;UID=root;PWD=root"),  //"DSN=ODBC資料來源名稱;UID=帳號;PWD=密碼"
                     CDatabase::openReadOnly | 
                     CDatabase::noOdbcDialog );  //資料庫連線參數(唯讀|無對話框)
    
    CRecordset* kxRecordSet = new CRecordset(kxDB);  //代表指向資料的指標物件
    kxRecordSet->Open( CRecordset::snapshot,      //連線互動方式(是否即時更新??)
                       "SELECT * FROM traveler",  //輸入資炓庫指令
                       CRecordset::none);         //不知道設定什麼的位元遮罩

    kxRecordSet->MoveNext();  //垂直移動,往下一個欄位

    CString str, temp;       //下一行,取得水平儲存格總數(微軟很愛用counter當total)
    for (short i = 0; i < kxRecordSet->GetODBCFieldCount(); ++i)
    {
        kxRecordSet->GetFieldValue(i, temp);  //水平移動,指定其中一個儲存格,並取出該欄位資料
        str += temp + "  ";
    }
    
    m_strShow.SetWindowText(str);

    kxRecordSet->Close();
    kxDB->Close();  //資料庫斷線
}
注意:此程式碼顯示在一個唯讀的controller上,所以沒有測試其寫入的部份。
參考資料:
CDatabase::OpenEx - MSDN
CRecordset::Open - MSDN
CRecordset::MoveNext - MSDN
CRecordset::GetODBCFieldCount - MSDN
CRecordset::GetFieldValue - MSDN

MariaDB+ODBC with MFC的中文亂碼問題

沒有留言:
這個問題,就是什麼都設定了,就是中文變亂碼。
要檢查編碼的地方有

  1. 資料庫編碼
  2. 資料型態編碼
  3. ODBC Driver連結器編碼設定
  4. 程式處理字串的編碼

在此解決的題第三個。
如果不是的話,請再檢查別的地方。(或者是請留言)

第一步:
按下設定,針對MySQL ODBC 5.2 Unicode Driver做設定。


第二步:
出現Config之後,再按它下面的Details。
出現下半部的Config,其中有一個下拉式選單Character Set,設定成適當的編碼即可。


參考資料:
ODBC連接MySQL時中文亂碼問題的解決

MariaDB with ODBC driver

沒有留言:
如果,我想透過ODBC和MariaDB溝通,那要怎麼做??
一開始Google "MariaDB ODBC driver" 找到了官網的問與答

ODBC Driver for MariaDB這一篇說
「灌MySQL的就可以跑得很好了,所以去灌吧」[1]

Availability of JDBC and ODBC driver for MariaDB server這一篇說
「我們當初會開發MariaDB是為了迴避授權金斷Oracle財路,MariaDB使用MySQL的ODBC driver可以運作得很好,所以去灌吧」[2]

所以,我們只好乖乖的去灌。

MySQL的ODBC Driver下載頁面,依適用的作業系統下載。[3]

之後到控制台找ODBC就可以設定了。
用法似乎就是把MariaDB當作MySQL,無視名稱的改變,就可以暢行無阻了。


在實作時出現了一個問題"Unknow column 'age' in 'field list'
'age'的部份,算是自己定的欄位,因人而異。
這個問題應該在選定的table裡面的檢查一下你的table是不是選錯。(我就是這樣)


參考資料:
[1] ODBC Driver for MariaDB
[2] Availability of JDBC and ODBC driver for MariaDB server
[3] MySQL::Download Connector/ODBC

MariaDB的第一步。

沒有留言:
+

平台: windows
沒接觸過任何SQL

動機:
因為MySQL已屬Oracle,而出來再造一個MariaDB而覺得他是英雄,我應該用用他的SQL,基於這種應該算是崇拜的心理而開始灌SQL。(這理由不錯吧)

介紹:
基本上MariaDB是可以拿來當作MySQL的替代品,而且就是為了相容而打造的開放軟體。[1]

安裝:
到Maria的官網,首頁就有最新版的下載頁面,貼心的還有教學可以看。
內容大概如下
  • MariaDB 5.5 Series
    是目前(我寫這篇文章時)的穩定發行版。它是MariaDB 5.3+MySQL 5.5
  • MariaDB 10.0 Series
    是開發版本。(似乎是MariaDB 5.5+MySQL 5.6)
  • MariaDB Galera Cluster 5.5 Series
    MariaDB Galera 5.5 就是MariaDB 5.5 + Galera。
    Galera是用在多主機同步用的工具
  • MariaDB Client Library for Java Applications 1.1 Series
    支援Java應用的用戶端開發Library
  • MariaDB Client Library for C 1.0 Series
    支援C應用的用戶端開發Library

安裝完畢,可以看見HeidiSQL在你的開始功能表裡面出現。

資料庫本身,MySQL的網路教學並沒有什麼友善的介面提供你使用,大多都是透過另外安裝第三方的用戶端軟體,在此我們堅持內建的HeidiSQL,但是它會出錯。

一開始試著連線,出錯了。

上網Google "An error occurred in the application HeidiSQL"的第一個連結告訴我,要手動換新版。[2]

官網去更新囉!
按下首頁的Installer,會下載了。

錯誤訊息改了,還是進不去!XD
不過它的意思是,帳密請打對。
所以,遇到這個的朋友,一定要再三檢查帳密是否正確唷。

輸入正確之後,就可以進去看看自己剛灌好的MariaDB大概長怎樣了。^^

看似小,但是這功能也不少。
剛接觸MariaDB的資料庫新手(像我這樣)可以和我一樣從它開始認識唷!^^


參考資料:
[1] MariaDB - 維基百科
[2] Issue 1812: Error at launch : "An error occurred in the application"

Microsoft RDBMS

沒有留言:
下列RDBMS(關聯式資料庫管理系統)從最早至今,依時間排列

DAO(Data Access Objects)一組COM元件的集合,適合存取桌上型資料庫管理系統管理的資料

ODBC((Open Database Connectivity)存取client/server資料庫的通用介面。
RDO(Remote Data Objects)一組COM元件的集合,利ODBC介面存取Client/Server資料庫的資料

UDA(Universal data Access,統一資料存取介面)程式可以存取任何型態的資料
OLE DB實現一套程式存取不同資料來源的COM介面。
ADO(ActiveX Data Object)是UDA理想的實踐,讓應用程式使用效能好的OLE DB這種最新的COM資料庫存取資料。