? access数据库之Access之C#连接Access 亚博足球娱乐场注册,亚博娱乐全天彩,亚博官网赢钱不给
VB.net 2010 视频亚博足球娱乐场注册--任意三数字加yabo.com直达官网 VB.net 2010 视频亚博足球娱乐场注册--任意三数字加yabo.com直达官网 VB.net 2010 视频亚博足球娱乐场注册--任意三数字加yabo.com直达官网
SQL Server 2008 视频亚博足球娱乐场注册--任意三数字加yabo.com直达官网 c#入门经典亚博足球娱乐场注册--任意三数字加yabo.com直达官网 Visual Basic从门到精通视频亚博足球娱乐场注册--任意三数字加yabo.com直达官网
当前位置:
首页 > 数据库 > Access数据库 >
  • access数据库之Access之C#连接Access

  • 2019-07-02 21:28 来源:未知

如果是个人用的小程序的话。一般都推荐用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.dll
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         /// 
 20         /// 返回受影响的行数
 21         /// 
 22         /// 
 23         /// 
 24         /// 
 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         /// 
 44         /// 返回数据对象
 45         /// 
 46         /// 
 47         /// 
 48         /// 
 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         /// 
 68         /// 返回table
 69         /// 
 70         /// 
 71         /// 
 72         /// 
 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         /// 
104         /// 向前读取记录
105         /// 
106         /// 
107         /// 
108         /// 
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         /// 
126         /// 读取存储过程
127         /// 
128         /// 
129         /// 
130         /// 
131         /// 
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命令操作如下图所示。

?

?

?

?好了。至此。完

?

作者:?nsky?
出处:?http://nsky.cnblogs.com?
本文版权归作者和博客园共有,欢迎转载,共同学习;共同进步;但不能乱搞!
相关亚博足球娱乐场注册--任意三数字加yabo.com直达官网