Access之C#连接Access

原文:Access之C#连接Access

如果是个人用的小程序的话。一般都推荐用Sqlite和Access

使用SQlite数据库需要安装SQLite驱动,详情:SQLite之C#连接SQLite

同样要使用Access数据库一必须安装Access驱动程序。驱动下载:http://pan.baidu.com/s/1moWje

官网下载:http://www.microsoft.com/zh-cn/download/details.aspx?id=13255

可以在收索你需要的版本。

微软ADO.NET数据提供程序

数据提供程序 命名空间 程序集
OLE DB System.Data.OleDb System.Data.dll
Microsoft SQL Server System.Data.SqlClient System.Data.dss
Microsoft.SQL Server Mobile System.Data.SqlServerCe System.Data.SqlServerCe.dll
ODBC System.Data.Odbc System.Data.dll

没有特定的数据提供程序直接映射到Jet引擎(比如微软的Access数据库),如果要和Acces数据文件交互,可以使用OLE DB数据提供程序或者ODBC数据提供程序。

由定义在System.Data.OleDb命名空间下的类组成的OLE DB 数据提供程序能让你访问所有支持基于传统COM的OLD DB协议的数据库,使用这个数据库提供程序,能非常简单地改变连接字符串中的“provider”,并能和各种OLE DB数据库进行通信。

如果你安装了微软的office。那么也安装了Access数据库,现在我们来一步一步完成对Access数据库的访问

打开Access数据库,选择创建数据库。选择保存路径和取名,单击创建即可

然后的界面就很熟悉了

单击 "单击以添加" 可以选择数据类型

选择类型后。比如这里选择文本类型。就可以输入字段名称

这里你会看到前面有一个默认的列ID。默认是主键。自增的。你可以选择当前列。在属性中看到,当然。你也可以改变当前字段的数据类型

为了简化操作,我这里只创建3个字段用于测试

字段名称 字段类型 字段说明
name string 姓名
age int 年龄
crateDate DateTime 添加时间(默认值是当天)

创建时间createDate需要设置默认值,选择createDate列,在属性部分。单击默认值。输入Now(),确定即可。还可以设置表达式格式。可以自己去看

创建完成后。ctrl+s保存。输入表名称user,确定

现在创建一个控制台程序。来连接Access

添加引用:System.Data.dll,

添加命名空间:using System.Data.OleDb;

为了方便。把数据库拷贝到项目的Debug目录下面,编写测试代码

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Data.OleDb; //引入命名空间 需要添加引用 System.Data.dll
 6
 7 namespace ConsoleApplication2
 8 {
 9     class Program
10     {
11         static void Main(string[] args)
12         {
13             //连接Access字符串
14             string conStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=userInfo.accdb;Persist Security Info=False";
15
16             //插入数据
17             string name = "张三";
18             int age = 18;
19
20             string sql = "insert into user(name,age)values(@name,@age)";
21             OleDbParameter[] para = {
22                                         new OleDbParameter("@name",OleDbType.VarChar),
23                                         new OleDbParameter("@age",OleDbType.Integer),
24                                         /*
25                                          * 我不知道这样写有什么区别,除了更简单还有什么好处
26                                            new OleDbParameter("@age",age)
27                                          */
28                                     };
29             para[0].Value = name;
30             para[1].Value = age;
31
32             int rows = 0;
33
34             using (OleDbConnection connect = new OleDbConnection(conStr))
35             {
36                 using (OleDbCommand cmd = new OleDbCommand(sql, connect))
37                 {
38                     if (para != null && para.Length > 0) cmd.Parameters.AddRange(para);
39
40                     if (connect.State == System.Data.ConnectionState.Closed) connect.Open();
41
42                     rows = cmd.ExecuteNonQuery();
43                 }
44             }
45
46             if (rows > 0) Console.WriteLine("插入成功");
47             Console.ReadLine();
48         }
49     }
50 }

运行后提示错误:

仔细看sql语句是不是没有错误的语法。再仔细想想呢?对,user是关键字,需要加用[]包裹。像这样:[user]

string sql = "insert into [user](name,age)values(@name,@age)";

修改后在运行,人品爆发的成功了

是不是迫不及待的想看看Access数据库中是否真的插入成功呢?

打开数据库界面。F5刷新试试

当然,你可以可以编写sql查询

右键:

跟着一步一步下来是不是也没有想象中的那么难呢?其实什么都不难。只要你肯努力:)

来看看链接字符串:

//连接Access字符串
  string conStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=userInfo.accdb;Persist Security Info=False";

这里的Microsoft.ACE.OLEDB.12.0,是连接Excel对象的接口引擎,与之对应的是:microsoft.jet.oledb.4.0

那么问题来了:

Microsoft.jet.oledb.4.0和Microsoft.ACE.OLEDB.12.0引擎有什么区别呢?

共同点:都是做为连接Excel对象的接口引擎

不同点:

对于不同的Excel版本,有两种接口可供选择:Microsoft.Jet.OLEDB.4.0(以下简称 Jet 引擎)和Microsoft.ACE.OLEDB.12.0(以下简称 ACE 引擎)。

Jet 引擎,可以访问 Office 97-2003,但不能访问 Office 2007。

ACE 引擎是随 Office 2007 一起发布的数据库连接组件,既可以访问 Office 2007,也可以访问 Office 97-2003。

另外:Microsoft.ACE.OLEDB.12.0 可以访问正在打开的 Excel 文件,而 Microsoft.Jet.OLEDB.4.0 是不可以的。

所以,在使用不同版本的office时,要注意使用合适的引擎。

我这里用的Access 2007,所以用的是ACE引擎

Data Source=userInfo.accdb。这里访问的是相对路径。因为数据库放在了Debug下面,但我来自火星。我就偏偏不喜欢把数据库放到Debug下面。

我想在项目中单独创建一个目录来存放数据库。那怎么办呢?好吧。程序员是伟大的。那你可以改路径,在项目下面创建一个db文件夹。把数据集拷贝到里面,结构图

从图可以看出来,从Debug目录到db目录要退两次,那么不就是 “..\..\” 。对吗?

那立马改改看看效果:

string conStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=..\..\db\userInfo.accdb;Persist Security Info=False";

对与否。你自己去测试下。哈哈。

记住:sql server中是可以拼接多条sql语句。然后一次性执行的。对吧,但Access是不行的。如果要执行多条sql语句。必须循环遍历。执行一条在执行下一条,直到海枯石烂。

为了更好的维护。当然是首选把连接字符串配置到app.config中

看看我已经配好了的

 1 <?xml version="1.0"?>
 2 <configuration>
 3   <configSections>
 4   </configSections>
 5   <connectionStrings>
 6     <add name="GoodManage.Properties.Settings.GMConnectionString" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\GM.accdb" providerName="System.Data.OleDb" />
 7   </connectionStrings>
 8   <appSettings>
 9     <add key="accessCon" value="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=..\..\db\GM.accdb;Persist Security Info=False" />
10     <add key="SQLConnString" value="provider=microsoft.jet.oledb.4.0;data source=" />
11     <add key="dbPath" value="..\..\db\GM.accdb" />
12     <add key="ClientSettingsProvider.ServiceUri" value="" />
13   </appSettings>
14   <startup>
15     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
16   </startup>
17   <system.web>
18     <membership defaultProvider="ClientAuthenticationMembershipProvider">
19       <providers>
20         <add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, 

PublicKeyToken=31bf3856ad364e35" serviceUri="" />
21       </providers>
22     </membership>
23     <roleManager defaultProvider="ClientRoleProvider" enabled="true">
24       <providers>
25         <add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
26       </providers>
27     </roleManager>
28   </system.web>
29 </configuration>

最后提供一个SQLHelper.cs  类

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5 using System.Data.SqlClient;
  6 using System.Data;
  7 using System.Configuration;
  8 using System.Data.OleDb;
  9 using System.Web;
 10 namespace DAL
 11 {
 12     public class SQLHelper
 13     {
 14         //连接字符串
 15
 16         static string connStr = ConfigurationManager.AppSettings["accessCon"];
 17
 18
 19         /// <summary>
 20         /// 返回受影响的行数
 21         /// </summary>
 22         /// <param name="comText"></param>
 23         /// <param name="param"></param>
 24         /// <returns></returns>
 25         public static int ExecuteNonQuery(string comText, params OleDbParameter[] param)
 26         {
 27             using (OleDbConnection conn = new OleDbConnection(connStr))
 28             {
 29                 using (OleDbCommand cmd = new OleDbCommand(comText, conn))
 30                 {
 31                     if (param != null && param.Length != 0)
 32                     {
 33                         cmd.Parameters.AddRange(param);
 34                     }
 35                     if (conn.State == ConnectionState.Closed)
 36                     {
 37                         conn.Open();
 38                     }
 39                     return cmd.ExecuteNonQuery();
 40                 }
 41             }
 42         }
 43         /// <summary>
 44         /// 返回数据对象
 45         /// </summary>
 46         /// <param name="comText"></param>
 47         /// <param name="param"></param>
 48         /// <returns></returns>
 49         public static object ExecuteScalar(string comText, params OleDbParameter[] param)
 50         {
 51             using (OleDbConnection conn = new OleDbConnection(connStr))
 52             {
 53                 using (OleDbCommand cmd = new OleDbCommand(comText, conn))
 54                 {
 55                     if (param != null && param.Length != 0)
 56                     {
 57                         cmd.Parameters.AddRange(param);
 58                     }
 59                     if (conn.State == ConnectionState.Closed)
 60                     {
 61                         conn.Open();
 62                     }
 63                     return cmd.ExecuteScalar();
 64                 }
 65             }
 66         }
 67         /// <summary>
 68         /// 返回table
 69         /// </summary>
 70         /// <param name="cmdText"></param>
 71         /// <param name="param"></param>
 72         /// <returns></returns>
 73         public static DataTable Adapter(string cmdText, params OleDbParameter[] param)
 74         {
 75             DataTable dt = new DataTable();
 76             //OleDbConnection con = new OleDbConnection();
 77             using (OleDbDataAdapter oda = new OleDbDataAdapter(cmdText, connStr))
 78             {
 79                 if (param != null && param.Length != 0)
 80                 {
 81                     oda.SelectCommand.Parameters.AddRange(param);
 82                 }
 83                 if (new OleDbConnection().State == ConnectionState.Closed)
 84                 {
 85                     new OleDbConnection(connStr).Open();
 86                 }
 87                 oda.Fill(dt);
 88             }
 89             return dt;
 90
 91             /*
 92             using (SqlDataAdapter sda = new SqlDataAdapter(cmdText, connStr))
 93             {
 94                 if (param != null && param.Length != 0)
 95                 {
 96                     sda.SelectCommand.Parameters.AddRange(param);
 97                 }
 98                 sda.Fill(dt);
 99             }
100             return dt;
101              * */
102         }
103         /// <summary>
104         /// 向前读取记录
105         /// </summary>
106         /// <param name="cmdText"></param>
107         /// <param name="param"></param>
108         /// <returns></returns>
109         public static OleDbDataReader ExectueReader(string cmdText, params OleDbParameter[] param)
110         {
111             OleDbConnection conn = new OleDbConnection(connStr);
112             using (OleDbCommand cmd = new OleDbCommand(cmdText, conn))
113             {
114                 if (param != null && param.Length != 0)
115                 {
116                     cmd.Parameters.AddRange(param);
117                 }
118                 if (conn.State == ConnectionState.Closed)
119                 {
120                     conn.Open();
121                 }
122                 return cmd.ExecuteReader(CommandBehavior.CloseConnection);
123             }
124         }
125         /// <summary>
126         /// 读取存储过程
127         /// </summary>
128         /// <param name="cmdText"></param>
129         /// <param name="type"></param>
130         /// <param name="param"></param>
131         /// <returns></returns>
132         public static DataTable GetPro(string cmdText, CommandType type, params OleDbParameter[] param)
133         {
134             DataTable dt = new DataTable();
135             using (OleDbDataAdapter sda = new OleDbDataAdapter(cmdText, connStr))
136             {
137                 new OleDbCommand().CommandType = CommandType.StoredProcedure;
138                 if (param != null && param.Length != 0)
139                 {
140                     sda.SelectCommand.Parameters.AddRange(param);
141                 }
142                 sda.Fill(dt);
143             }
144             return dt;
145         }
146     }
147 }

sqlite、Access都只要安全驱动就可以用数据库。那sql server是不是也可以 呢。答案是正确的。

只要安装Microsoft SQL Server 2005 Express Edition,就可以使用sql数据库了

当安装vs2010或其他版本,也就顺带的安装了express Edition

Microsoft SQL Server 2005 Express Edition官网下载:

http://www.microsoft.com/zh-cn/download/details.aspx?id=21844

但要管理数据库就需要安装SQL Server Management Studio。

在网上找到一片关于Express edition 开启远程连接的方法,我没尝试过。真的。我不骗你

http://blog.csdn.net/xiongyilong/article/details/1925353

转载于此:

SQL Server 2005 Express 作为微软数据库的低端解决方案,在开发小型应用和WEB应用中有广泛的使用。但是SQL Server 2005 Exrpress在默认安装下只允许本机访问,如何启用网络访问功能就很有必要,现在我简单的介绍一下。

1、 确 认成功安装SQL Server 2005 Express和 数据库服务已经启动。安装完成后,可以通过随SQL Server 2005 Express一同安装的工具 SQL Server Configuration Manager 查看数据库服务和其他的配置信息。

上图显示数据库服务已经启用。

2、 查 看SQL Server Express 2005 网络配置信息(SQL Server 2005 Network Configuration――> Protocols for SQLEXPRESS)。默认的情况下右边列表中的Named Pipes和TCP/IP的状态为Disable,即没有启用。右键点击这两项,在弹出菜单中选中Enable启用这两个协议,如下图。

3、 在TCP/IP协议上双击鼠标,弹出对话框。修改对话框Protocol属性页中的“Listen All ”项设为“no”。IP Address属性页中,修改你要数据库服务监听的IP地址的属性,修改Enabled属性为Yes,修改TCP Dynamic Ports属性为空,TCP Port项在默认安装下为空,现在修改为我们监听端口1433。修改后的状态如下图所示;

4、 启动管理工具

,管理界面如下所示:

选中“Surface Area Configuration for Services and Connection”选项

5、 改修改DATA Engine的Remote Connection属性,修改后的属性如下图所示:

6、 完成以上操作后需要重新启动数据库服务才能使修改生效,下图的操作可以完成数据库服务的重启。

7、 重启后,可以在命令窗口输入如下命令“netstat - na”命令查看服务器监听的所有端口,如果我们设备的1433端口正在监听,我们启用SQL Server 2005 Express网络操作成功。当然也可以使用telnet 命令来验证数据库操作是否成功。使用netstat命令操作如下图所示。

好了。至此。完

时间: 2024-10-19 01:24:06

Access之C#连接Access的相关文章

C#连接Access数据库(详解)

做一个用VS2012的C#连接Access数据库的备忘, SQL数据库固然强大,有大微软的强力技术支持,LINQ的方便操作,但是如果写一个小程序对数据库方面没有什么大的要求的话,将来在数据库方面就可以选择使用access数据库,这样就能省去一定的开支. 首先,我们建一个数据库,因为大家使用的office版本不同,有用2000的有用2003的还有用 2007或者2010的.我用的是2007,但是无论用哪个版本请把建的数据库建为.mdb结尾的2003版本的不要建 .accdb结尾的. 建一个表,请先

64位Winows2008下连接Access数据库 Jet4.0不支持解决代替方案

如何在windows2008 64位的机子上连接Access数据库 用以前的连接Access数据库的方式Provider=Microsoft.Jet.OLEDB.4.0在32位机子上可以使用,在64位上不能使用,可以使用代替方案-微软Access数据库引擎2010下载安装后 更改使用下面的连接串可以解决. Microsoft Access データベース エンジン 2010 (微软Access数据库引擎2010)    AccessDatabaseEngine_X64.exe 下载 http://

win7 64 VC++ ado方式连接access 连接字符串

运行环境:win7 64       vc++6.0       office 2007  32位(access 2007) 我用的是ado方式连接access数据库,(现在的Win7系统中安装的一般都是32位的Office,因为微软推荐使用32位的Office,兼容性更强,稳定性更好.access文件是.mdb(2003格式,会提示没有jet访问组件) .accdb(2007格式)),因此需要安装AccessDatabaseEngine_X64.exe驱动,安装时会提示先卸载office再安装

使用JDBC-ODBC连接Access数据库

使用JDBC-ODBC桥连接ACCESS数据库有两种方式:(1)配置ODBC数据源:(2)不配置ODBC数据源. 如果数据库文件为 person.mdb,路径为:G:\ProgramFiles\MyEclipse 6.5\workspace\JdbcOdbcTest\src\ person.mdb.配置的数据源名称为:person. (1)  配置ODBC数据源: 打开ODBC数据源管理器,在"系统DSN(或者用户DSN)"选项卡里面点击"添加"按钮. 在"

在VS2013平台下,用VB.net 连接Access数据库

从开始学习计算机,我们使用的一直是SQL数据库.这次接触了Access数据库,我将从Access创建到连接向大家分享一下我在Access数据库中的收获. SQL数据库和Access数据库的区别:(来自百度) 那么如何用Vb.net 链接Access数据库呢? 第一,建立Access数据库文件 我的是WIN8.1的系统,直接在桌面的角上滑动一下,在搜索栏里搜索Access,就直接打开了Office自带的Access,如果你的电脑上没有安装Office,也想要用Access也不用担心,可以直接到去网

具体解释VB中连接access数据库的几种方法

在VB中,连接ACCESS数据库的方法主要有以下三种 使用ADO对象,通过编写代码訪问数据库 Connection 对象 ODBC数据源 使用ADO Data 控件高速创建数据库连接 有三种连接方法 Data Link文件 使用ODBC数据源名称 使用连接字符串 使用数据环境设计器创建数据库连接 首先加入环境引用. 然后找到数据源进行连接 不管是哪一种连接,都是先有一个路径,通向要连接的数据源,和数据源建立关系,在连接.就好比从北京到上海,能够做汽车,能够做火车,还能够做飞机,汽车走快速,火车走

Java连接Access数据库的那些坑

Java 使用 JDBC 连接Access数据库 需要掌握的技能 1.Java SE基本技术 2.懂点JDBC技术 能够学到如何使用Java正确的连接JDBC 环境 window8.1 64位 jdk6 32位 Access 2013 Eclipse 4.4 下面是代码 package com.malin.app; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; impor

ASP.net分别连接SQLserver数据库与连接Access数据库精英版

-------------------------连接access2003 字符串------------------------- Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Data.mdb 连接access2010 字符串 Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\aa.accdb -------------------------

[易语言]连接ACCESS数据库学习

一.支持库配置 工具-支持库配置-数据库操作支持库 二.添加控件 启动窗口添加控件(数据库连接/记录集/超级列表框) 三.数据库连接 数据库连接1.连接Access ("数据库文件路径", "数据库密码") 例:数据库连接1.连接Access (取运行目录 () + "H:\m.mdb", "") 四.定义变量 .局部变量 索引, 整数型 .局部变量 用户ID, 整数型 .局部变量 日期时间, 文本型 五.例子 .支持库 eD