C#连接Access数据库
1.using关键字的⽤法
1.1 引⽤命名空间
应⽤名称空间namespace,可以引⽤我们需要的程序集,然后在程序中我们就不必再写详细的名称空间类型。
using system;
using System.Data.OleDb;
using System.Data;
using System.Configuration;
引⽤命名空间,并不等于编译器编译时加载该命名空间所在的程序集,程序集的加载决定于程序中对该程序集是否存在调⽤操作,如果代码中不存在任何调⽤操作则编译器将不会加载using引⼊命名空间所在空间的程序集。因此,在源⽂件开头,引⼊多个命名空间,并⾮加载多个程序集,不会造成“过度引⽤“的弊端。
1.2 为命名空间或者类型创建别名
类似于Python关键字as,Pyhton的写法为:
import turtle as t;
⽽C# using关键字也可以做到简化名称,放便调⽤。
using ole= System.Data.OleDb;
using data=System.Data;
using con=System.Configuration;
1.3 using释放当前调⽤的资源
using语句允许程序员指定使⽤资源的应当合适释放,using语句中使⽤对象必须实现IDisponsable接⼝,此⽅法释放对象的资源。
在程序编译阶段,编译器会⾃动将using语句⽣成try-finally语句,并在finally块中调⽤对象的Dispose⽅法,来清理资源.所以,using语句等效于try-finally语句。
/*使⽤using语句*/
public static int CommandSQL(string SQL)
{//建⽴连接
using (OleDbConnection objConnection = new OleDbConnection(ConnectionString))
{//打开连接
objConnection.Open();
using (OleDbCommand cmd=new OleDbCommand())
{//执⾏增删改查命令
cmd.Connection=objConnection;
cmd.CommandText=SQL;
int count=cmd.ExecuteNonQuery();
/
*OleDbCommand.ExecuteNonQuery();
* 对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的⾏数。
* 对于其他所有类型的语句,返回值为 -1。
*/
//返回执⾏结果
return count;
}
}
}
2. 使⽤Data.Ole程序集连接Access数据库
2.1 创建共享⽂件夹
(1)打开cmd 命令窗⼝输⼊:ipconfig,并复制⾃⼰的IP地址。
(2)右键将要共享的⽂件夹的属性,设置共享⽂件夹加⼊⾃⼰的ip/⽂件名即可完成配置【注意斜杆】。
2.2 OleDb程序集介绍
命名空间为 OLE DB .NET Framework数据提供程序。
表⽰要对数据源执⾏的 SQL 语句或存储过程。
⾃动⽣成⽤于协调对的更改与关联数据库的单表命令。此类不能被继承。
表⽰到数据源的连接是打开的。
为创建和管理由类使⽤的连接字符串的内容提供了⼀种简单⽅法。
表⽰⽤于填充和更新数据源的⼀组数据命令和⼀个数据库连接。
提供从数据源读取数据⾏的只进流的⽅法。此类不能被继承。
提供⽤于枚举本地⽹络中所有可⽤ OLE DB 提供程序的机制。
收集与数据源返回的警告或错误有关的信息。
收集 OLE DB .NET Framework 数据提供程序⽣成的所有错误。此类不能被继承。
在基础提供程序返回 OLE DB 数据源的警告或错误时引发的异常。此类不能被继承。
表⽰⼀组⽅法,这些⽅法⽤于创建 OLEDB 提供程序实现数据源类的实例。
为事件提供数据。此类不能被继承。
提供⼀个常数列表,该列表与 GetSchema ⽅法⼀起使⽤以检索元数据集合。
提供静态值,这些值⽤于中包含的对象的列名称。由 GetSchema ⽅法创建。
表⽰的参数,还可以是参数到列的映射。此类不能被继承。
表⽰与相关的参数集合及其各⾃到中列的映射。
启⽤⽤于 OLE DB 的 .NET Framework 数据提供程序,以帮助确保⽤户具有⾜够的安全级别来访问 OLE DB 数据源。
将某安全操作与⾃定义安全特性相关联。
为事件提供数据。
为事件提供数据。
返回由 [GetOleDbSchemaTable(Guid, Object ⽅法指定的架构表类型。
表⽰要在数据源进⾏的 SQL 事务。此类不能被继承。
我们主要使⽤类与类
2.3 新建SQLHelper.cs类⽤来调⽤Access数据库
在SQLHelper.cs类中添加以下⽅法:
public static int CommandSQL(string SQL)
{ //建⽴连接
using (OleDbConnection objConnection = new OleDbConnection(ConnectionString))
{//打开连接
objConnection.Open();
using (OleDbCommand cmd=new OleDbCommand())
{//执⾏增删改查命令
cmd.Connection=objConnection;
cmd.CommandText=SQL;
int count=cmd.ExecuteNonQuery();
/*OleDbCommand.ExecuteNonQuery();
* 对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的⾏数。
* 对于其他所有类型的语句,返回值为 -1。
*/
//返回执⾏结果
return count;
}
}
}
3. 批量使⽤SQL语句定义Access中字段类型
3.1 SQL语句改变字段类型
Alter TABLE 表名称 Alter COLUMN 字段名称 Byte //数字[字节]
Alter TABLE 表名称 Alter COLUMN 字段名称 Long //数字[长整型]
Alter TABLE 表名称 Alter COLUMN 字段名称 Short //数字[整型]
Alter TABLE 表名称 Alter COLUMN 字段名称 Single //数字[单精度
Alter TABLE 表名称 Alter COLUMN 字段名称 Double //数字[双精度]
Alter TABLE 表名称 Alter COLUMN 字段名称 Currency //货币
Alter TABLE 表名称 Alter COLUMN 字段名称 Char //⽂本
Alter TABLE 表名称 Alter COLUMN 字段名称 Text(n) //⽂本,其中n表⽰字段⼤⼩
Alter TABLE 表名称 Alter COLUMN 字段名称 Binary //⼆进制
Alter TABLE 表名称 Alter COLUMN 字段名称 Counter //⾃动编号
Alter TABLE 表名称 Alter COLUMN 字段名称 Memo //备注
Alter TABLE 表名称 Alter COLUMN 字段名称 Time //⽇期/时间
3.2 定义DefineFields()⽅法
需要⾃⼰定义的字段类型及长度
JSYDSYQ=new string[,]{{"YSDM","TEXT","10"},{"ZDDM","TEXT","19"},
{"BDCDYH","TEXT","28"},{"YWH","TEXT","20"},
{"QLLX","TEXT","2"},{"DJLX","TEXT","6"},
{"DJYY","TEXT","200"},{"SYQMJ","double","2"},
{"SYQQSSJ","DateTime","0"},{"SYQJSSJ","DateTime","0"},
{"QDJG","double","0"},{"BDCQZH","TEXT","255"},
{"QXDM","TEXT","6"},{"DJJG","TEXT","200"},
{"DBR","TEXT","50"},{"DJSJ","DateTime","0"},
{"FJ","TEXT","255"},{"QSZT","TEXT","2"}};
//多维数组
public static void DefineFields(string [,] array,string tableName){
int i=0;
string sql="";
while(i < array.GetLength(0)){
switch(array[i,1]){
case "TEXT":
sql=String.Format(@"Alter TABLE {0} Alter COLUMN {1} Text({2})",tableName,array[i,0],array[i,2]);
int count=SQLHelper.CommandSQL(sql);
if (count!=-1)
Print("定义字段:"+array[i,0]+"成功;长度为:"+array[i,2]);
break;
case "DateTime":
sql=String.Format(@"Alter TABLE {0} Alter COLUMN {1} DateTime",tableName,array[i,0]);
int count1=SQLHelper.CommandSQL(sql);
if (count1!=-1)
Print("定义字段:"+array[i,0]+"成功;类型为:"+array[i,1]);
break;
case "double":
sql=String.Format(@"Alter TABLE {0} Alter COLUMN {1} double",tableName,array[i,0]);
int count2=SQLHelper.CommandSQL(sql);
if (count2!=-1)
Print("定义字段:"+array[i,0]+"成功;类型为:"+array[i,1]);
break;
default:
sql=String.Format(@"Alter TABLE {0} Alter COLUMN {1} long",tableName,array[i,0]);
int count3=SQLHelper.CommandSQL(sql);
if (count3!=-1)
Print("定义字段:"+array[i,0]+"成功;类型为:"+array[i,1]);
break;
}
i++;
}
}
4. ConnectAccess程序源码与程序结构
4.1 程序结构
│ ConnectAccess.sln
│
└─ConnectAccess
│ fig
│ ConnectAccess.csproj
│ MainForm.cs
│ MainForm.Designer.cs
│ sx
│ Program.cs
│ SQLHelper.cs
│
├─bin
│└─Debug
│
│ fig
│ ConnectAccess.pdb
增加字段的sql语句│
│ nfig
│ anifest
│
├─obj
│└─Debug
││ ConnectAccess.
││ ConnectAccess.csprojResolveAssemblyReference.cache
││
││ ConnectAccess.pdb
││ DesignTimeResolveAssemblyReferencesInput.cache
││
│└─TempPE
└─Properties
AssemblyInfo.cs
4.2 使⽤说明
可以在配置⽂件fig中增加需要改变的字段数据。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
</startup>
<appSettings>
<add key="SQLConnString" value="Provider=Microsoft.Jet.OleDb.4.0;Data Source=//DESKTOP-KM4H7JL//access//130431SXB.mdb"/> <add key="QXDM" value="131124"/>
</appSettings>
</configuration>
4.3 源码地址
欢迎⼤家积极评论
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论