Origin C访问数据库(MySQL)
Origin可以用界面的方式來導入數據庫的數據到工作表,對應的界面對話框為SQL Editor和Query Builder。SQL Editor是Origin推薦使用的,Query Builder是比較老的一個工具。
Origin也可以通過Origin C編程的方式來導入數據庫的數據,也可以把工作表的數據導出到數據庫。這里演示用Origin C來導入導出MySQL的數據。
以下安裝都選擇64位的。
1.安裝MySQL,這里用到的版本是8.0.11
MySQL官網下載一個社區的免費版,https://dev.mysql.com/downloads/mysql/。自行安裝。記住用戶名和密碼,這里直接用root帳戶也沒有問題。
2.為了使用界面操作,安裝Workbench
也是到MySQL官網下載,https://dev.mysql.com/downloads/workbench/。
打開Workbench,看能不能登陸。服務器名為localhost,端口為3306,帳戶為root,密碼設置了什么就填什么。登陸后看有沒有world這個數據庫,這是MySQL自帶的。如果沒有登陸上,或者登陸上沒有這個數據庫,那就。。。拜拜!
3.安裝ODBC
還是MySQL官網,https://dev.mysql.com/downloads/connector/odbc/。
4.安裝完ODBC,查看一下驅動
打開控制面版,找到系統和安全,然后打開管理工具,雙擊ODBC數據源(64 位)打開,然后在驅動那個標簽看有沒有類似于MySQL ODBC 8.0 Unicode Driver這樣的驅動,有就記下來。
連接字符串的編寫是這樣的:
Driver={MySQL ODBC 8.0 Unicode Driver}; 大括號里就是驅動的名稱 Server=localhost; MySQL安裝的機器名,本地就localhohst Port=3306; 端口 Database=world; 數據庫名 UID=root; 帳戶名 PWD=xxx 密碼5.數據庫準備好了就可以開始Origin的操作
打開64位的Origin,再打開Code Builder,新加一個名為Origin_Access_MySQL.c文件,并加入到工作區間。
首先是導入數據庫的代碼:
void Origin_Access_MySQL_Query() { // 定義一個Origin C函數,編譯通過可以直接在Origin的Script Window直接運行// 數據庫連接字符串string strConn = "Driver={MySQL ODBC 8.0 Unicode Driver};Server=localhost;Port=3306;Database=world;UID=root;PWD=xxxx";// 要執行的查詢語句string strQuery = "Select ID, Name, CountryCode, District, Population from city limit 100;";Worksheet wks;wks.Create("Origin"); // 新建一個工作表if (!wks) {return;}Object mysql;mysql = CreateObject("ADODB.Connection"); // 連接對象if (!mysql) {return;}mysql.Open(strConn); // 打開連接Object recordset;recordset = CreateObject("ADODB.Recordset"); // 記錄集對象if (!recordset) {return;}recordset.CursorLocation = 3; // 3 == adUseClient,使recordset為只讀,可以加快打開速度recordset.Open(strQuery, mysql); // 打開記錄集// int rowBegin = 10; // 從工作表的第幾行開始填數據// int numRows = 100; // 填多少條數據// 這個方法只返回布爾值,已經不推薦使用,推薦使用ReadRecordset// bool bb = wks.PutRecordset(recordset, rowBegin, numRows); int err = wks.ReadRecordset(recordset); // 返回0為成功if (err != 0) {printf("數據庫讀取失敗!");} }運行這個函數可以把world這個數據庫下的city表導入到Origin的工作表中。
6.然后來試一下把剛才導入的工作表的數據添加到數據庫中。
回到Workbench,新建一個數據庫名為test,然后運行以下SQL語句來生成一個結構跟city這個表差不多的一個表。
CREATE TABLE `test`.`city` (`ID` INT(11) NOT NULL,`Name` CHAR(35) NOT NULL DEFAULT '',`CountryCode` CHAR(3) NOT NULL DEFAULT '',`District` CHAR(20) NOT NULL DEFAULT '',`Population` INT(11) NOT NULL DEFAULT '0',PRIMARY KEY (`ID`)) ENGINE = InnoDB DEFAULT CHARACTER SET = latin1 COLLATE = latin1_bin;生成后,回到Code Builder,開始把工作表的數據導出到數據庫。
void Origin_Access_MySQL_Insert() { // 定義一個Origin C函數,編譯通過可以直接在Origin的Script Window直接運行// 數據庫連接字符串string strConn = "Driver={MySQL ODBC 8.0 Unicode Driver};Server=localhost;Port=3306;Database=test;UID=root;PWD=xxxx";// 要執行的查詢語句string strQuery = "Select ID, Name, CountryCode, District, Population from city;";Worksheet wks = Project.ActiveLayer(); // 當前工作表if (!wks) {return;}Object mysql;mysql = CreateObject("ADODB.Connection"); // 連接對象if (!mysql) {return;}mysql.Open(strConn); // 打開連接Object recordset;recordset = CreateObject("ADODB.Recordset"); // 記錄集對象if (!recordset) {return;}recordset.CursorLocation = 3; // 3 == adUseClient, 使recordset為只讀,可以加快打開速度// Recordset.Open([Source],[ActiveConnection],[CursorType],[LockType],[Options])// 1 == adOpenKeyset// 3 == adLockOptimistic, 當數據源正在更新時,系統并不會鎖住其他用戶的動作,其他用戶可以對數據進行增、刪、改的操作recordset.Open(strQuery, mysql, 1, 3); // 打開記錄集, //int option = LAYWKSETRECORDSET_APPEND; // 追加的形式插入int option = LAYWKSETRECORDSET_REPLACE; // 覆蓋的形式插入,如主鍵已存在,更新該條數據,主鍵不存在,則插入int rowBegin = 0;int numRows = 10;int colBegin = 0;int err = wks.WriteRecordset(recordset, option, rowBegin, numRows, colBegin); // 返回0為成功if (err != 0) {printf("數據庫讀取失敗!");return;}if (recordset.State == 1) { // adStateOpen,記錄集還是打開狀態,則關閉recordset.Close();} }運行這個函數時,剛才導入數據生成的工作表要處于當前工作表狀態。
至此,實現了Origin C對MySQL數據庫的訪問,包括查詢數據然后導入Origin的工作表、把Origin工作表導出插入到數據庫。
源碼可于github下載:https://github.com/gkimeeq/OriginAdvancedApplication。
轉載于:https://www.cnblogs.com/Ooman/p/11089292.html
總結
以上是生活随笔為你收集整理的Origin C访问数据库(MySQL)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中科海讯数字科技笔试题
- 下一篇: 国内WiFi模组厂商盘点及发展分析