全球FlexSim系统仿真中文论坛
标题:
使用ODBC连接Access数据库
[打印本页]
作者:
zorsite
时间:
2017-5-24 09:34
标题:
使用ODBC连接Access数据库
本帖最后由 zorsite 于 2017-5-24 09:42 编辑
5 Z0 j9 J$ K- E
* f! g% r; ]5 p2 V5 g' H. H
[size=14.6667px]用户手册的Tutorial中有一篇是讲SQL的,不过它使用的是MySQL。
[size=14.6667px][attach]3739[/attach]
; c# L2 I; A7 S1 n9 ]( E! }* |5 x
; O; I4 Y# g- n0 \
[size=14.6667px]现在我把这篇教程转为使用Access数据库。
% E1 Z7 u" V! Z5 z) I6 v* F2 b) M
( L! g: K+ m4 ~; E
[size=14.6667px]模型背景如下:
" b) S/ e% ^; P( ?% p1 g# x
[size=14.6667px]发生器产生4种临时实体,进入4台处理器进行加工。每种临时实体在不同的处理器中加工时间不一样。
, v/ L; k2 f) ~7 Z) v4 R
[size=14.6667px][attach]3740[/attach]
+ D a% ?% p9 B! P c# a* Y
" u9 i0 Z+ A6 f+ i( \
[size=14.6667px]我们可以通过建立一张全局表进行加工时间的定义,也可以使用外部数据库。
* b8 B9 B; j* q9 K9 q/ r: }
[size=14.6667px]首先你得有一个数据库。使用ACCESS创建一个新的数据库,命名为flexsimdata。创建一张数据表,表名为processtimes,添加4个字段proc1、
[size=14.6667px]proc2、
[size=14.6667px]proc3、
[size=14.6667px]proc4。
8 L$ {, _; |6 _1 @7 n* a" `8 `
1 G. N2 }, I( h2 g$ ^
4 i# F& G6 P4 w+ t2 o5 _
[size=14.6667px][attach]3741[/attach]
# O9 C# K; o2 n9 t( T
- X$ k" x) C5 y: K" a
[size=14.6667px]数据库建好了,能用Flexsim直接访问吗?答案是不能。应用程序想要访问某种数据库,必须针对此数据库软件编写相应的“驱动程序”。市面上数据库软件那么多,难道Flexsim公司要一一去编写驱动吗?显然不现实。而这个工作微软件已经完成了。
% e6 z' p% L {# g. h, m+ Q
[size=14.6667px]微软在操作系统中内置了一个叫做ODBC(Open Database Connectivity
[size=14.6667px]开放数据库连接)的组件,这个组件可以和不同的数据库软件连接。
[size=14.6667px]开放数据库互连(ODBC)是微软提出的数据库访问接口标准,其定义了访问数据库API的一个规范,这些API独立于不同厂商的DBMS,也独立于具体的编程语言。ODBC规范后来被X/OPEN和ISO/IEC采纳,作为SQL标准的一部分。也就是说,只要是遵循SQL标准的数据库软件,都可以和ODBC连接,并通过ODBC进行管理。这样一来,类似
[size=14.6667px]Flexsim这样的软件要做的就是和ODBC这个中间件对接就好了,再由ODBC对不同的数据库进行连接。
) e3 {* |/ e$ r4 F7 A
[size=14.6667px]现在,我们在ODBC中为刚建立的ACCESS数据库建立一个连接。
8 ]7 o. a( }% g+ N
[size=14.6667px]ODBC在控制面板--管理工具中可以找到。如果是64位ACCESS,参见
[size=14.6667px]http://flexsimasia.com/viewthread.php?tid=6202&page=1&fromuid=610#pid19984。
+ r( q( x0 j- x. O- J
[size=14.6667px][attach]3742[/attach]
/ u" ?( [! R) z9 J
' h$ q# O' g. l" ^+ i$ @
[size=14.6667px][attach]3743[/attach]
3 E3 U4 m3 h |" D: D+ {* F1 |
8 a* R7 Y0 @1 \; t( t8 G! M
[size=14.6667px]数据源名可以和数据库同名,也可以不同名。Flexsim在同数据库进行连接时,需要使用在ODBC中设置的这个“数据源名”,而不再使用数据库的名字。
[size=14.6667px]创建好数据库连接之后,可以在flexsim中使用dbopen命令打开该数据库。
- y8 P g! @1 `
[size=14.6667px]在处理器的“加工时间”中输入以下代码:
5 }* T3 Z0 Y9 Z* u& O
[size=14.6667px]
/**查询数据库*/
% X- M4 I0 x) \4 D& }) n
string sqlstr="select * from processtimes";
; g: h4 x$ _" C( r3 W
dbopen("flexsimdata",sqlstr,0);
1 b, y' E# ]4 m" v H
//dbviewtable;//查看被打开的表
! G9 l0 w5 D+ O% Y4 n: }/ E, e4 @
int row=item.Type;
3 J7 c) S) S' q
int col=ipopno(current,1);
' b, w3 n. K8 ~& ^; r7 B7 Y% f
double protime=dbgettablenum(row,col);
/ G% G% E0 U) p3 F# q! s' J1 g
dbclose;
4 B# v, i/ `- @$ O- V
return protime;
复制代码
# X7 o' O: k Y$ o
) ]3 C0 x. k8 X% F
[size=14.6667px]
8 R0 K( M2 v- B- U5 L: Z
2 @1 A1 l1 v: x: |- f' g2 ^
[size=14.6667px]模型是用flexsim 17.1.2完成的,低版本的无法打开。
/ @9 Z& S8 {( p8 H) v; z" O& {
[size=14.6667px][attach]3744[/attach]
- \* t/ Y( F% Z
作者:
慧娴亚伦
时间:
2017-5-24 14:23
感谢加老师分享,补充一点雷区。
$ O& Y% Y8 _: u/ x
1、FlexSim目前使用odbc只能对应系统版本,也就是说,64位系统装32位软件无法使用odbc;
" i% A3 d6 u; _! C& z; h( i
2、如果使用的是access数据库,那么不止是系统版本要对应,office的版本也需要对应,也就是说如果要在64位系统用64位FlexSim还要再安装64位office(access),这样才能在odbc中正确的创建FlexSim可以调用的数据源(查看自己电脑office是否64位的可以看下图,在账户|关于XX中可以看到)
, d9 ~2 P+ A% q4 Y; k6 {/ c+ I0 @
[attach]3746[/attach]
6 b% B, ]' Q. C0 n# i8 E7 Z3 `
3、创建数据源的执行程序名字叫做:odbcad32.exe(32位还是64位都是以32结尾),而他们所在的文件夹分别:
7 v5 |4 _7 Q- n7 G% e. M5 ?
64位系统:C:\Windows\System32
: z8 }: n# B2 j7 s$ k( t
32位系统:C:\Windows\SysWOW64
" a- V8 d: H( W3 p/ w" g5 B, a
$ w: i; a1 y- h. I M# k, p
是的。。。我没有写错,64位在32结尾;32位在64结尾(这个锅要微软背)。
, N0 m& F/ \, s
大家可以用加老师推荐的方法来找,保证正确。
作者:
lulu-luka
时间:
2017-5-25 00:37
前排支持~
作者:
fenglin
时间:
2017-5-25 01:44
作者:
我很强壮
时间:
2017-6-8 13:57
谢加老师
作者:
慧娴亚伦
时间:
2017-7-7 11:21
6#
吴庆祺
. M# b, Y ~& j; `
) n" J6 K9 B, y' w5 p
6 I# w; }& a$ x
回复好像乱码了哟。
作者:
吴庆祺
时间:
2017-7-7 14:38
鑰佸笀闂笅odbc娌℃湁64浣嶇殑鎬庝箞鍔
作者:
Lucy
时间:
2018-1-18 14:29
学习了
作者:
shaon007
时间:
2020-5-8 11:26
666正想了解这一块
作者:
superyangkk
时间:
2020-7-3 23:14
谢谢
: ~6 R0 }, p. H( r, e! ?- a
欢迎光临 全球FlexSim系统仿真中文论坛 (http://www.flexsimasia.com/)
Powered by Discuz! X3.3