连接Access数据库应注意的几点

连接Access数据库应注意的几点 本地数据库可以有Y种选择,比如Sqlite、SQLerverExpress、SQLLocalDB、SQLServerCE、Access等,本文选用比较著名的Access本地数据库,在连接数据库应该注意的几点事项。   Access数据库是Office家族的一员,历史悠久,相信各位不会陌生。不过,有些东西可能你以前没   过去,连接Access数据库,我们都会使用OLEDBMicrosoft.Jet.OLEDB.4.0提供程序,系统默认也带有该驱动程序,所以使用起来也特特地方便。   但jet.oledb通常是32位的,如果应用程序编译为x64版本,会发生异常。如下所示。   如果改为x86就可以正常运行。而且,你也发现了,改用AnyCPU也可以正常运行,为啥呢。   现在你打开项目属性窗口,然后切换到“生成”选项卡,在AnyCPU选项中,是不是看到一个选项叫“首选32位”?好,现在你把“首选32位”的对勾去掉。   然后,你在64位平台上运行,同样会发生异常。如果勾选了“首选32位”就不会发生异常。   万物皆在变化之中,Access版本不断更新,从起,.mdb文件变成了.accdb文件,所以,使用Jet.OLEDB引擎是不能连接.mdb文件的。   连接.accdb文件的提供程序为Microsoft.ACE.OLEDB.12.0,即连接字符串应该这样写:   Provider=Microsoft.ACE.OLEDB.12.0;DataSource=

DataDirectory

\\students.accdb   有关连接字符串,你可以到下面这个网站上看看:   这个网站上面可以找到各种各样数据库的连接字符串,资源丰富,相当值得收藏。   系统默认是不带Microsoft.ACE.OLEDB.12.0驱动程序的,你得到这里下载:   在连接.accdb文件时,一定要对上版本,如果你安装的引擎是32位的,应用程序应该生成为x86版本,如果安装的引擎是64位的,那么,你的应用程序应生成x64版本。   有大伙伴朋友一定会问了,那有没有办法判断系统是否带有特定的提供程序,如果没有,可提示用户安装?答案自然是肯定的,来来来,先看看这个例子。看代码:   OleDbDataReaderreader=OleDbEnumerator.GetRootEnumerator();   DataTabletable=newDataTable();   table.Load(reader);   dataGridView1.DataSource=table.DefaultView;   或者,可以这样:   OleDbEnumeratorenumerator=newOleDbEnumerator();   DataTabledt=enumerator.GetElements();   dataGridView1.DataSource=dt.DefaultView;   这样一耍,就会把当前所支持的OLEDB的提供程序都列出来了。如下。   其中,SOURCES_NAME列就是提供程序的名称,所以,在程序代码中,只要检测一下你要的提供程序是否存在,就可以知道有没有安装相关的引擎了。   比如,下面代码验证一下当前运行环境是否可以连接.accdb文件。   stringaccdbPrd="Microsoft.ACE.OLEDB.12.0";   OleDbEnumeratorenu=newOleDbEnumerator();   DataTabledtprd=enu.GetElements();   //Linq   varqr=fromrindtprd.AsEnumerable()   wherer.Fieldstring("SOURCES_NAME")==accdbPrd   selectr;   if(qr.Count()==0)   MessageBox.Show("唉,还没安装相关的提供程序。");   else   MessageBox.Show("可以连接数据库了。");二、如何连接.accdb文件这个在上面说过了,只要把连接字符串中的Provider改为Microsoft.ACE.OLEDB.12.0就可以了,或者参考上面给的那个网站的信息,反正这个你都会的。三、关于

DataDirectory

占位符   DataSource设置的是数据库文件的路径,为了方便,通常会这样写:DataSource=

datadirectory

\\mydb.accdb。DataDirectory占位符是不区分大小写的。默认条件下,对于Web项目,datadirectory指向项目目录下的App_Data,这是ASP.NET的惯例,这里就不多介绍了。对于其他应用而言,datadirectory指向应用程序运行的目录,如果程序是在\bin\debug目录下运行,那么数据目录就是\bin\debug。   不过呢,datadirectory是可以更改的,下面例子把数据目录改为当前登录用户的“文档”目录。   stringdocpath=Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);   AppDomain.CurrentDomain.SetData("DataDirectory",docpath);   调用AppDomain的SetData方法就可以修改

datadirectory

占位符所指向的数据目录。现在我把.accdb文件放到我的用户名下的“文档”下,即C:\Users\myname\Documents。   接着连接字符串可以这样写:   Provider=Microsoft.ACE.OLEDB.12.0;DataSource=

DataDirectory

\\pigstore.accdb   实际指向的文件路径为:C:\Users\myname\Documents\pigstore.accdb。好了,有用的东西就讲到这了,新梦想的同学们如果还有不懂的可以再问老师。主编主编邮箱:zhuyanan

new-dream.net新浪微博:

新梦想软件测试-网址:







































哪家医院治愈白癜风
那里治疗白癜风最好



转载请注明:http://www.xcqg58.com/lsqy/1163.html