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语句。部分内容引用于博客园博主zdick
/*使用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程序集介绍
System.Data.OleDb 命名空间为 OLE DB .NET Framework数据提供程序。
OleDbCommand | 表示要对数据源执行的 SQL 语句或存储过程。 |
---|---|
OleDbCommandBuilder | 自动生成用于协调对 DataSet 的更改与关联数据库的单表命令。 此类不能被继承。 |
OleDbConnection | 表示到数据源的连接是打开的。 |
OleDbConnectionStringBuilder | 为创建和管理由 OleDbConnection 类使用的连接字符串的内容提供了一种简单方法。 |
OleDbDataAdapter | 表示用于填充 DataSet 和更新数据源的一组数据命令和一个数据库连接。 |
OleDbDataReader | 提供从数据源读取数据行的只进流的方法。 此类不能被继承。 |
OleDbEnumerator | 提供用于枚举本地网络中所有可用 OLE DB 提供程序的机制。 |
OleDbError | 收集与数据源返回的警告或错误有关的信息。 |
OleDbErrorCollection | 收集 OLE DB .NET Framework 数据提供程序生成的所有错误。 此类不能被继承。 |
OleDbException | 在基础提供程序返回 OLE DB 数据源的警告或错误时引发的异常。 此类不能被继承。 |
OleDbFactory | 表示一组方法,这些方法用于创建 OLEDB 提供程序实现数据源类的实例。 |
OleDbInfoMessageEventArgs | 为 InfoMessage 事件提供数据。 此类不能被继承。 |
OleDbMetaDataCollectionNames | 提供一个常数列表,该列表与 GetSchema 方法一起使用以检索元数据集合。 |
OleDbMetaDataColumnNames | 提供静态值,这些值用于 OleDbMetaDataCollectionNames 中包含的 DataTable 对象的列名称。 DataTable 由 GetSchema 方法创建。 |
OleDbParameter | 表示 OleDbCommand 的参数,还可以是参数到 DataSet 列的映射。 此类不能被继承。 |
OleDbParameterCollection | 表示与 OleDbCommand 相关的参数集合及其各自到 DataSet 中列的映射。 |
OleDbPermission | 启用用于 OLE DB 的 .NET Framework 数据提供程序,以帮助确保用户具有足够的安全级别来访问 OLE DB 数据源。 |
OleDbPermissionAttribute | 将某安全操作与自定义安全特性相关联。 |
OleDbRowUpdatedEventArgs | 为 RowUpdated 事件提供数据。 |
OleDbRowUpdatingEventArgs | 为 RowUpdating 事件提供数据。 |
OleDbSchemaGuid | 返回由 [GetOleDbSchemaTable(Guid, Object]) 方法指定的架构表类型。 |
OleDbTransaction | 表示要在数据源进行的 SQL 事务。 此类不能被继承。 |
我们主要使用OleDbConnection类与OleDbCommand类
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
│ app.config
│ ConnectAccess.csproj
│ MainForm.cs
│ MainForm.Designer.cs
│ MainForm.resx
│ Program.cs
│ SQLHelper.cs
│
├─bin
│ └─Debug
│ ConnectAccess.exe
│ ConnectAccess.exe.config
│ ConnectAccess.pdb
│ ConnectAccess.vshost.exe
│ ConnectAccess.vshost.exe.config
│ ConnectAccess.vshost.exe.manifest
│
├─obj
│ └─Debug
│ │ ConnectAccess.csproj.FileListAbsolute.txt
│ │ ConnectAccess.csprojResolveAssemblyReference.cache
│ │ ConnectAccess.exe
│ │ ConnectAccess.pdb
│ │ DesignTimeResolveAssemblyReferencesInput.cache
│ │
│ └─TempPE
└─Properties
AssemblyInfo.cs
4.2 使用说明
可以在配置文件app.config中增加需要改变的字段数据。
<?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>