【ACCESS精品源码栏目提醒】:本文主要为网学会员提供“C++对Access操作方法 简单教程 - 编程语言”,希望对需要C++对Access操作方法 简单教程 - 编程语言网友有所帮助,学习一下!
C对
Access 数据库的操作下面以
Access 数据库为例说明,用 C的 DataSet 类访问数据库的一些操作方法。
操作涉及的主要 C类有:DataSet:对应数据库表的一个集合,实际上是数据库表在内存中的一个缓存DataTable:对应数据库表,是数据库表行的集合DataRow:对应数据库表行OleDbConnection:建立数据库连接OleDbDataAdapter:由数据库生成 DataSet并负责 DataSet 与数据库的同步OleDbCommandBuilder:生成更新数据库所需的指令DataSet、DataTable、DataRow 用于数据在缓存中的操作,这上面的操作只有更新到数据库中,修改结果才会被永久保存。
OleDbConnection 是用 OLEDB 方法连接数据库所必需的。
OleDbDataAdapter 和 OleDbCommandBuilder 用来生成 DataSet,完成 与数据库更新。
OleDbDataAdapter 和 OleDbCommandBuilder 相对应,SqlDataAdapter 和 SqlCommandBuilder 也可以完成用 SQL 语言为指令的数据库更新。
假设在 D:盘创建了
Access 数据库,其路径为d:0DBAcsaccount.mdb,数据库中有一张名为 kaizhi 的数据库表。
表结构如下:表名;Kaizhi 字段 Field Name 类型 说明1 开支 ID kzID 长整型 自动编号2 开支人 Kzren 文本 50 字符3 开支项目名 kzname 文本 50 字符4 日期 riqi 日期/时间 99-99-99;0 掩码5 开支说明 shuoming 文本 225 字符6 总金额 zonge 单精度 小数点任意;这项开支的总 花费7 数量 shuliang 长整型8 单价 Danjia 单精度 小数点任意表建好之后:(1)对表中添加新数据(2)查询表中的某个字段。
为了实现这两项功能,以下几个问题要考虑:1 准备工作声明必须的公共变量建立与数据库的连接,创建 DataSet 对象2 添加记录在 DataSet 对象上添加记录同步 DataSet 对象对象与数据库中的数据,这一点很重要,很多人忘记了数据进行同步,结果往往是添加、修改的数据不能保存到数据库中。
3 查询数据库表中某记录的某字段;我们可以将上述功能用一个类 DataOper 实现,下面是程序设计的主要活动。
声明要用的 C系统类using Systemusing System.Collections.Genericusing System.Textusing System.IOusing System.Datausing System.Data.OleDbusing System.Data.SqlClient声明 DataOper 类中的公共变量private string DBlocationprivate OleDbConnection dbconn //数据库连接private OleDbDataAdapter da建立与数据库的连接,这里采用了 OLEDB 方法:dbconn newOleDbConnectionprovidermicrosoft.jet.oledb.4.0 DataSourced:0DBAcsaccount.mdbdbconn.Open创建 DataSet 对象da new OleDbDataAdapterselect from kaizhi dbconn //引用数据库连接 dbconn 并依据 SQL 语句select from kaizhi创建 OleDbDataAdapter 对象 daDataSet ds new DataSet //创建 DataSet 对象da.Fillds //用 OleDbDataAdapter 对象 da 填充、更新刚创建的DataSet 对象添加记录并更新数据库 OleDbCommandBuilder cb new OleDbCommandBuilderda // 创建 OleDbCommandBuilder 对象 cb 用于更新 OleDbDataAdapter 对象da 的 Insert、Delete、Update 指令 da.UpdateCommand cb.GetUpdateCommand //更新OleDbDataAdapter 对象 da 的指令设计人员可以编写自己的更新指令,也可以象上面所写的那样用系统默认的指令。
但不管怎样,上面的语句不能缺少,否则程序在运行中会抛出异常 System.InvalidOperationException,并提示:Updaterequires a valid InsertCommand when passed DataRow collectionwith new rows.DataRow drx ds.Tables0.NewRow //创建一条新记录行 drxkzren kzren drxkznamekzname drxriqi2008-10-11 drxshuomingshuoming drxzonge 12 drxshuliang 3 drxdanjia 4 ds.Tables0.Rows.Adddrx //在表中追加记录 da.Updateds //更新数据库要查询引用某记录的某字段,直接按如下的方法引用就可以了。
String kxds.Tables0.Rows0kzren.ToString连接
access首先看一个例子代码片断:程序代码:--------------------------------------------------------------------------------using system.datausing system.data.oledb......string strconnectionprovidermicrosoft.jet.oledb.4.0strconnectiondata sourcec:begaspnetnorthwind.mdboledbconnection objconnectionnewoledbconnectionstrconnection......objconnection.openobjconnection.close......--------------------------------------------------------------------------------解释: 连接
access 数据库需要导入额外的命名空间所以有了最前面的两条 using 命令这是必不可少的 strconnection 这个变量里存放的是连接数据库所需要的连接字符串他指定了要使用的数据提供者和要使用的数据源. providermicrosoft.jet.oledb.4.0是指数据提供者这里使用的是 microsoft jet 引擎也就是
access 中的数据引擎asp.net就是靠这个和
access 的数据库连接的. data sourcec:begaspnetnorthwind.mdb是指明数据源的位置他的标准形式是data sourcemydrive:mypathmyfile.mdb.ps: 1.后面的符号是防止将后面字符串中的解析为转义字符. 2.如果要连接的数据库文件和当前文件在同一个目录下还可以使用如下的方法连接: strconnectiondata source strconnectionmappathnorthwind.mdb 这样就可以省得你写一大堆东西了 3.要注意连接字符串中的参数之间要用分号来分隔. oledbconnection objconnectionnewoledbconnectionstrconnection这一句是利用定义好的连接字符串来建立了一个链接对象以后对数据库的操作我们都要和这个对象打交道. objconnection.open这用来打开连接.至此与
access 数据库的连接完成.其余操作插入删除...请参阅相关书籍连接 sql server例子代码片断:程序代码:--------------------------------------------------------------------------------using system.datausing system.data.sqlclient...string strconnectionuser idsapasswordstrconnectioninitialcatalognorthwindserveryoursqlserverstrconnectionconnect timeout30sqlconnection objconnectionnewsqlconnectionstrconnection...objconnection.openobjconnection.close...--------------------------------------------------------------------------------解释:连接 sql server 数据库的机制与连接
access 的机制没有什么太大的区别只是改变了 connection 对象和连接字符串中的不同参数.首先连接 sql server 使用的命名空间不是system.data.oledb而是system.data.sqlclient.其次就是他的连接字符串了我们一个一个参数来介绍注意:参数间用分号分隔: user idsa:连接数据库的验证用户名为 sa.他还有一个别名uid所以这句我们还可以写成uidsa. password:连接数据库的验证密码为空.他的别名为pwd所以我们可以写为pwd. 这里注意你的 sql server 必须已经设置了需要用户名和密码来登录否则不能用这样的方式来登录.如果你的 sql server 设置为windows 登录那么在这里就不需要使用user id和password这样的方式来登录而需要使用trusted_connectionsspi来进行登录. initial catalognorthwind:使用的数据源为northwind这个数据库.他的别名为database本句可以写成databasenorthwind. serveryoursqlserver:使用名为yoursqlserver的服务器.他的别名为data sourceaddressaddr.如果使用的是本地数据库且定义了实例名则可以写为serverlocal实例名如果是远程服务器则将local替换为远程服务器的名称或 ip 地址. connect timeout30:连接超时时间为 30 秒. 在这里建立连接对象用的构造函数为:sqlconnection. 其余的就和
access 没有什么区别了 用 c访问
access 数据库 我编写这个程序的动机是当我希望用 c sharp 访问 msaccess 数据库的时候我没有办法获得任何信息和参考材料.网上所能获得的所有材料都是偏重于 sql 的所以我们将分两步来编写这个应用程序第一我们将展示如何连接到 msaccess 数据库然后看看它有多复杂.最后我们就这样完成了这个程序. 闲言少序让我们开始正题.连接到数据库的过程与我们早先的 ado连接过程相比已经发生了较大的变化.下面的图表恰当的我希望如此oledbconnection-- oledbcommand -- oledbdatareader.现在那些熟悉 ado 的人很明显能看出两者的相似之处但是为了使那些还没有很好的适应 ado 的人能够明白下面是一些解释. oledbconnection --代表对数据库的单一连接根据底层数据库的功能它能给你操纵数据库的能力.有一点必须记住虽然 oledbconnection对象出了作用范围它也不会自动被关闭.所以你将不得不显示的调用这个对象的 close方法. oledbcommand --这是就象我们在 ado 中使用的一样的通常的command 对象.你可以通过这个对象调用 sql 存储过程或是 sql 查询语句. oledbdatareader --这个类拥有非常大的重要性因为它提供了实际上 的 对 数 据 库 底 层 数 据 集 的 访 问 . 当 你 调 用 oledbcommand 的executereader 方法的时候它就会被创建.net beta2 sdk 说不要直接创建这个类的对象. 现在你可以在.net beta 2 的文档中看到更多的关于这些主要对象的说明下面是指出如何在程序中访问数据库的源代码. using system using system.data.oledb class oledbtest public static void main /创建数据库连接 oledbconnection aconnection newoledbconnectionprovidermicrosoft.jet.oledb.4.0datasourcec:db1.mdb /创建 command 对象并保存 sql 查询语句 oledbcommand acommand new oledbcommandselect fromemp_test aconnection try aconnection.open /创建 datareader 对象来连接到表单 oledbdatareader areader acommand.executereader console.writelinethis is the returned data from emp_test table /循环遍历数据库 whileareader.read console.writelineareader.getint320.tostring /关闭 reader 对象areader.close/关闭连接这很重要aconnection.close/一些通常的异常处理catcholedbexception econsole.writelineerror: 0 e.errors0.message成功运行这个程序的步骤1.用 msaccess 创建一个名叫 db1.mdb 的数据库2.创建一个名叫 emp_test 的表单3.使它包含下列数据域emp_code intemp_name textemp_ext text 4.将上面的代码保存到 sample.cs 文件中 5.确保数据库位于 c:并确保 mdac2.6 或是更新的版本已经被安装 6.编译运行 现在让我们来了解一些我们在 oledbconnection 对象的构造函数看到的东西的一些细节在这里你看见诸如provider之类的东西.下面是一些和 ado.net 兼容的驱动程序类型. sqlolddb -- microsoft ole db provider for sql server msdaora -- microsoft ole db provider for oracle microsoft.jet.oledb.4.0 -- ole db provider for microsoft jet 你可以选择其中的任何一个但是他们会需要传递不同的参数例如jet.oledb.需要传递 mdb 文件的名字而 sqloledb 需要传递用户名和密码. 所有这些驱动程序都位于 system.data.oledb 命名空间里所以你必须包括它而且它们和 oledb provider for odbc 不兼容也就是说你不能在 vb6.0 程序里使用这些驱动程序来访问数据库所以不要去寻找解释为什么要把这些数据库放在 c:上的资料了 当你使用 microsoft sql server 7.0 或者更新版本的时候下面是微软给出的一些指导: 推荐使用.net data provider 在下列情况中使用 microsoft sql server7.0 或者更新版本的中间层应用程序使用 microsoft data enginemsde或 icrosoft sql server 7.0 或者更新版本的单层应用程序. 建议将 ole db provider for sql server sqloledb和 ole db .net dataprovider 一起使用. 对于 microsoft sql server 6.5 和更早的版本你必须同时使用 ole dbprovider for sql server 和 ole db.net data provider. 推荐使用 microsoft sql server 6.5 和更早的版本或是 oracle 的中间层应用程序使用 ole db .net data provider. 对于 microsoft sql server 7.0 或者更新版本推荐 sql server .net dataprovider. 推荐单层应用程序使用 microsoft
access 数据库. 不推荐一个中间层程序同时使用 ole db .net data provider 和microsoft
access 数据库. 不再支持 ole db provider for odbc msdasql