1. 程式人生 > >用OTL庫連線讀取access資料庫

用OTL庫連線讀取access資料庫

一.環境及建立一個數據庫

程式設計環境:VS2010

資料庫:access2007

OTL庫載地址:http://otl.sourceforge.net/home.htm

使用access2007建立一個數據庫 MetGS.accdb ,表名為:ModelInfo


二. 新增使用者資料庫源

            控制面板---管理工具---資料來源(ODBC)-----使用者DSN---點選新增


如下圖所示,選擇Microsoft Access Driver(*.mdb,*accdb).


Access安裝如下圖。 


這裡兩點需要修改,修改後,然後點選確認就可以

(1)資料庫源名(N),這個隨意填寫,我這裡使用:MetGS

(2)資料庫選擇,包含剛才建立 MetGS.accdb的路徑。

完成後就多出一個MetGS


三, 建立一個程式設計環境

(1)使用VS2010建立一個控制檯的應用程式,然後需要把otlv4.h檔案複製到對應的環境中,如下圖所示:

                

(2)寫程式,簡單的測試程式碼如下。

#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define OTL_ODBC 
#include "otlv4.h" // include the OTL 4.0 header file


void print(otl_connect& db)
{
	//由於許可權問題,access 2007 b不支援修改使用者和使用者組
	//沒有實現直接從資料庫獲取表名,
	//char db_buf[32]={};
	//otl_stream stream1(50,"select name from MSysObjects  where type=1 and flags=0",db);
	//stream1>>db_buf;
	
	//直接使用表名
	char db_buf[]="ModelInfo";
	char buf[128]={};
	sprintf_s(buf,"select * from %s",db_buf);
	otl_stream stream(50,buf,db);
	//MG m;
	int f1;
	char f2[32]="";
	int f3;
	char f4[32]="";
	int f5;
	char f6[32]="";

	while(!stream.eof())
	{
		stream>>f1>>f2>>f3>>f4>>f5>>f6;
		cout<<f1<<"  "<<f2<<" "<<f3<<"  "<<f4<<"  "<<f5<<"  "<<f6<<endl;
	}
}

int main()
{
	otl_connect db;
	otl_connect::otl_initialize();
	try{
		db.rlogon("Admin/
[email protected]
"); //登入資料庫 cout<<"connnect succes"<<endl<<endl; print(db); }catch(otl_exception & p) { cerr<<p.msg<<endl; cerr<<p.stm_text<<endl; cerr<<p.sqlstate<<endl; cerr<<p.var_info<<endl; } db.logoff(); getchar(); return 0; }
顯示結果:



總結: 

(1)連結資料庫這塊,花了好幾個小時,一直出現這個問題。

開始使用的是這種連線方式:

db.rlogon("Driver={Microsoft Access Driver(*.mdb,*accdb)};DBQ=\"E:\CODE_test\Test\MetGS.accdb\";Uid=Admin;Pwd=admin"); //不成功

最後的解決方案是:增加一個數據庫源,db.rlogon("Admin/[email protected]"); //登入資料庫,登入成功


(2)沒有解決的許可權問題,根據資料庫獲得表名稱。“show tables”不能再access中使用。

使用語句:select name from MSysObjects  where type=1 and flags=0

可以在access 2007中成功查詢表名稱,但是在程式中出現如下問題。


網上的解決方案如下,但是發現只適合access2003,最後直接用表查詢。

 開啟您的ACCESS資料庫,然後

 工具 -> 選項 -> 檢視 -> 隱藏物件、系統物件

前面的勾選上。

工具 -> 安全 -> 使用者與組的許可權


相關推薦

OTL連線讀取access資料庫

一.環境及建立一個數據庫 程式設計環境:VS2010 資料庫:access2007 OTL庫載地址:http://otl.sourceforge.net/home.htm 使用access2007建立

【Mac系統 + Python + Django】之開發一個釋出會系統【Django模型(二)】 【Mac系統 + Mysql】之安裝Mysql資料庫 【Python + Mysql】之pymysql連線Mysql資料庫並進行增刪改查操作

上一部分給大家介紹Django的檢視。 接下來繼續來了解Django框架,來看第二部分,此部分是對資料庫的操作。   目錄: 一、設計系統表 二、admin後臺管理 三、基本資料訪問(SQLite資料庫) 四、Django配置MySQL   &

C# 讀取Access資料庫及php讀取伺服器上的Access資料庫

Access資料庫他是不能遠端訪問的,也就是說實際上它是單機的一個數據庫,那麼如果非要遠端訪問它那麼就需要php作為中間語言去操作Access資料庫。 我想現實使用C#在本地訪問Access資料庫。要想訪問Access資料庫,我們首先得自己建立一個數據庫檔案:在開始選單中找到 Microso

C# 一步步連線操作ACCESS資料庫

連線資料庫時,我們需要用到 OleDbConnection 類 OleDbConnection oleDb = new OleDbConnection(@"Provider = Microsoft.Jet.OLEDB.4.0; Data Source = Database.m

TensorFlow訓練的模型引數(W和B)利用np.savez()儲存和cnpyC++讀取

一、背景 大家經常會在Python環境下用TensorFlow訓練自己的深度學習模型。為了日後能夠使用訓練好的模型,在Python環境下,TensorFlow提供了 tf.train.Saver類,用來儲存模型。這個類提供了一整套函式用於方便的儲存和恢復模型! 但實際情

sparksql 連線讀取MySQL資料庫

1. 從oracle 官方網站  https://dev.mysql.com/downloads/connector/j/ 下載mysql-connector 驅動,一般是一個rpm包。2.  部署mysql-connector 驅動    在spark中使用此驅動連線mys

【190104】VC++ 讀取Access資料庫動態生成選單原始碼

原始碼下載簡介 VC++ msado15.dll資料庫例項,通過ADO動態連結庫msado15.dll連線Access資料庫,動態生成窗體選單,該功能適用於大部分的VC++ ADO動態載入選單的場合,msado15.dll動態連結位於Windows系統盤的“Program Files\Com

實現JDBC-ODBC橋連線Access資料庫

如何實現JDBC-ODBC橋連線到Access? (讓你對java執行環境有更好的瞭解) 1、        首先要建立ODBC資料來源,我的系統是Win8.1系統,所以依次選擇“控制面板----管理工具----資料來源(ODBC)”,開啟資料來源管理器,如圖所示: 根據

在沒有裝Access2007的電腦上能否ASP等連線accdb格式資料庫

ACCESS 97-ACCESS 2003的mdb格式只要 win98 se 以上版本內建了 MDAC 和 JET DB 就能程式設計操作 MDB 了。那麼 accdb 格式在沒有安裝 access 2007 的電腦上能否用 ASP ASP.NET VB6 VB.NET C#

ASP讀取ACCESS資料庫隨機記錄的方法

檢查了一些貼子對於MSSQL資料庫一般可以採用這樣的語句:<%select top 50 * from someTable order by NewID()%>   但是如果是Access資料庫的話似乎沒有什麼好的解決方法。   方法一:有人用如下程式碼以記錄總數

解決navicate遠端連線資料庫出現1045 access denied for user 'root'@'localhost' using password yes

  在mysql命令列中執行 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456XXX');  GRANT ALL PRIVILEGES 

ApolloStudio高手之路(7):Python輕鬆連線SQLServer/Oracle/MySQL/SQLite/MS Access等關係型資料庫

關係型資料庫,是建立在關係模型基礎上的資料庫,藉助於集合代數等數學概念和方法來處理資料庫中的資料。現實世界中的各種實體以及實體之間的各種聯絡均用關係模型來表示。關係模型是由埃德加·科德於1970年首先提出的,並配合“科德十二定律”。現如今雖然對此模型有一些批評意見,但它還是資料儲存的傳統標準。標

VS2013 MFC連線Access資料庫(ADO)詳細版例項操作(含Combo Box讀取資料庫內容,附原始碼)

話不多說,先上圖,如果你需要的是這樣的程式,那麼可以下載下來看一看,帖子裡也會附上比較具體的操作步驟:先附上下載地址:程式下載地址 程式已經經過VS 2013+Windows 7+Access 2003的測試(執行出現其他問題應該多為環境問題,解決辦法各位可以自行百度)具體的

ADO常用的連線方式和訪問加密的ACCESS資料庫

在stdafx.h中新增一句指令: #import "c:\program files\common files\system\ado\msado15.dll" \ no_namespace \ rename ("EOF", "adoEOF") COM庫的初始化在CWi

php讀取access數據

pre field user span rom sof records log ive <?php //讀取mdb數據庫 $conn = new com("ADODB.Connection"); $connstr = "DRIVER={Microsoft Acces

nodejs連線Access資料庫,出現Error: Spawn C:\WINDOWS\SysWOW64\cscript.exe error Java專案生成可執行jar包、exe檔案以及在Windows下的安裝檔案

因為集成了第三方的資料庫,所以需要獲取資料庫的資料 使用 var connection = ADODB.open('Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+config.id_path+';');  

連線Access資料庫連線字串

來自森大科技官方部落格 http://www.cnsendblog.com/index.php/?p=92連線Access資料庫的連線字串 把資料庫檔案放在App_Data資料夾中,Web.Config檔案中的連線字串如下所示:<connectionStrings><add name

SQL與eclipse的連線,從資料庫讀取表資料,將二維陣列資料匯入表

示例: import java.util.List; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; impor

利用PyMySQL連線資料庫

安裝與準備 這是python3的庫,所以windows下安裝不會像python2那樣各種奇葩VC錯誤。是比較方便的傻瓜安裝。 Windows平臺下: py -3 -m pip install PyMySQL Linux: python3 pip install PyMySQL 當然,引入的

利用python的pyodbc連線access 資料庫 & pyodbc的基本用法

一、安裝第三方庫 pyodbc Pip install pyodbc 二、檢驗是否可以正常連線資料庫 檢查是否有一個Microsoft Access ODBC驅動程式可用於你的Python環境(在Windows上)的方法: >>> import pyodb