Live2D

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语句。部分内容引用于博客园博主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地址。

查看自己的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>

4.3 源码地址

传送门

欢迎大家积极评论

posted @ 2020-09-26 13:26  编程渣渣呀  阅读(1051)  评论(0编辑  收藏  举报