在asp.net中连接ACCESS数据库有两种方法,具体 *** 作如下:
第一种方法,就是真接在在设计页面上拉一个控件,例如GridView、DataList,点击右上角那个三角符,新建数据源,在跳出的对话框选择数据库,新建连接,在添加连接对话框的更改那里选择Access数据库,之后在浏览那里选择没棚姿你的数据库,测试成功的话,接下来的,就比较容易了。
连接数和洞据库第二种方法:是从图中的ConnctionStr中选择<新枯绝建连接?>然后将会d出如下窗口;选择好数据库的类型 “下一步”后 选择数据库的正确位置。
(测试连接 成功后)单击确定,然后(双击编辑窗口任意空白位置)打开对应的cs文件,将会看到程序中自动加入了protected System.Data.OleDb.OleDbConnection MyConnection代码。
现在要打开数据库变得很简单了,你只要使用MyConnection.Open()//数据库就打开了。
比如在你的工程目录雀握慧中建一个dbf\vir.mdb //Access数据库,然后你需要做顷答以下 *** 作:
1.在StadAfx.h里面添加皮升#include<afxdb.h>//新加入头文件,用于CDatabase类。
2.在StadAfx.h最后的#endif上添加#import"msado15.dll"no_namespacerename("EOF","rsEOF")
这时,你要把msado15.dll拷到与dbf同级的目录,也就是工程目录里,当然你可以该路径
3.在你自己的工程里,比如MyProc是你建的工程,添加代码
CMyPorcApp::CMyProcApp(){
CoInitialize(NULL)
SQLConfigDataSource(NULL,ODBC_ADD_DSN,"MicrosoftAccessDriver(*.mdb)",\
"DSN=MyImageDBQ=dbf\\vir.mdbDEFAULTDIR=dbf")//注册本地数据库数据源
m_db.OpenEx("DSN=MyImage",CDatabase::noOdbcDialog)//MyImage是数据源名称
}
4.在前面的函数体之前创建全局变量CDatabasem_dbCRecordsetm_rec(&m_db)
5.使用数据库{
CStringstrSQL="select*fromvirdb"
BSTRbstrSQL=strSQL.AllocSysString()
m_rec.Open(CRecordset::dynaset,strSQL)
while(!m_rec.IsEOF())
{
//使用数据库的代码,读出来的数据都是字符串型的
CStringMyVirable
m_rec.GetFieldValue("字段名",MyVirable) //将某个字段的当前行的值读到MyVirabl中
//......
m_rec.MoveNext()//将记录移到下一行
}
}
本程序是自动注册数据源的,当然可以手动注册数据源,关于如何注册数据源并不麻烦,叙述起来不太方面,你就参考其他的吧。不过建议不用手动注册数据源,这样你地程序移植性不好.
环境配置:1. 先安装你的Access数据库(微软Office 2016中含有或者单独下载,下载地址:http://msdn.itellyou.cn/ 左侧选择应用程序一栏,注意选择下载64位,即标有X64的)
特殊情况查看意外解决方案 (A)
2. 安装Microsoft Access database engine 2007,他的作用暂时可理解为我们所写的程序与Access之间的沟通桥笑源茄梁--“传话人”。
Microsoft Access database engine 2010(可以安装,但后面的代码是2007的,所以暂碰察时建议使用2007)
下载地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=13255
Microsoft Access database engine 2007
下载地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=23734
特殊情况查看意外解决方案 (C)
连接与测试代码:
本例代码使用VS2010以上版本测试
建议去文末下载写好的含注释的测试代码看。
1. 新建你的数据库表
打开Access
选择空白数据库,为你的数据库中表项起一个名字 如 Test
设计你的存储表格
本例附有测试表格database1.accdb
2.
在你程序的stdafx.h头文件中加入
#import"C:/ProgramFiles/CommonFiles/System/ADO/msado15.dll"
rename("EOF","adoEOF"), rename("BOF","adoBOF")
(如果加载失败的话,去c:\program files\common files\system\ado查看是否有msado15.dll)
3.测试代码介绍
// LinkDBForHX.cpp : 定义控制台应用程序的入口点。
[cpp] view plain copy
#include "stdafx.h"
#include<iostream>//atlstr
#include<atlstr.h>
using namespace ADODB
using namespace std
class AdoAccess {
public:
_ConnectionPtr HX_pConnection// 数据库指针
_RecordsetPtrHX_pRecordset// 命令指针
_CommandPtr HX_pCommand// 记录指针
void OnInitADOConn() {
::CoInitialize(NULL)
try
{
HX_pConnection.CreateInstance(__uuidof(Connection))//等价于 //HX_pConnection.CreateInstance("ADODB.Connection")
//此句包含定位你数据库的所需的访问信息
_bstr_t strConnect = "Provider=Microsoft.ACE.OLEDB.12.0Data Source=Database1.accdbPersist Security Info=False "
//测试//_bstr_t strConnect = "Provider=Microsoft.Jet.OLEDB.4.0Data Source=Database1.accdbPersist Security Info=False"//此句包含裂禅定位你数据库的所需的访问信息
//测试//_bstr_t strConnect = "Provider=Microsoft.ACE.OLEDB.12.0Driver = { Microsoft Access Driver(*.mdb, *.accdb) }DBQ =Database1.accdbPersist Security Info=False "
//此句包含定位你数据库的所需的访问信息
//连接master数据库,无密码。
HX_pConnection->Open(strConnect,"","",adModeUnknown) //连接数据库
cout <<"连接成功,并获得智能指针" <<endl
}
catch (_com_error e)
{
cout <<e.Description() <<endl
}
}
void ExitConnect() {
if (HX_pRecordset != NULL)
HX_pRecordset->Close()
HX_pConnection->Close()
::CoUninitialize()
}
}
int main()
{
AdoAccess dataBase
//初始化
dataBase.OnInitADOConn()
dataBase.HX_pRecordset.CreateInstance("ADODB.Recordset")
//选择名为Test的表格
dataBase.HX_pRecordset->Open("select * from Test",
dataBase.HX_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText)
int i = 0
//读取其中的name字段所有数据,并显示
while (!dataBase.HX_pRecordset->adoEOF)
{
_variant_t var
string strValue
var = dataBase.HX_pRecordset->GetCollect("name")
//其他类似,都是通过HX_pRecordset传递SQL语句执行查找、添加、删除等命令
if (var.vt != VT_NULL)
strValue = _com_util::ConvertBSTRToString((_bstr_t)var)
++i
cout <<"name " <<i <<" " <<strValue <<endl
dataBase.HX_pRecordset->MoveNext()
}
//卸载com组件
dataBase.ExitConnect()
int xxxx = 0
cout <<"输入数字结束\n"
cin >>xxxx
return 0
}
意外情况解决方案
A 描述:未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序。
请正确安装环境配置中的第一步
B 若A无法解决问题。
选择 该应用程序的 应用程序池 ------>选择高级设置--------->启用32位应用程序 ------->true
*** 作如下:
按下win + R
在d出的对话框中输入inetmgr,然后按回车键
选择最左侧
点击应用程序池
再点击下图的DefaultAPPPool
选择高级设置
选择启用32位应用程序 ---置为True.
最后选择确认保存
C 重新安装 Microsoft Access databaseengine 2007
D 程序若提示缺少符号集,请下载相关符号集或者在联网状态下动态加载
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)