Home  >  Article  >  Database  >  如何使用c#操作ACCESS数据库

如何使用c#操作ACCESS数据库

WBOY
WBOYOriginal
2016-06-07 16:23:231348browse

如何使用c#操作ACCESS数据库: 手头没有Microsoft Access,如何建立数据库,一切依然简单. 首先引用C:Program FilesCommon FilesSystemadomsadox.dll,该DLL包含ADOX命名空间; 接着引用C:Program FilesCommon FilesSystemadomsjro.dll,该DLL包含JRO命名空间 SxS

   如何使用c#操作ACCESS数据库:

  手头没有Microsoft Access,如何建立数据库,一切依然简单.

  首先引用C:Program FilesCommon FilesSystemadomsadox.dll,该DLL包含ADOX命名空间;

  接着引用C:Program FilesCommon FilesSystemadomsjro.dll,该DLL包含JRO命名空间

  SxS好问提示:如,导入dll不成功,手动把com组件导入为 .net组件,在用vs.net工具导入

  using System;

  using System.IO;

  using ADOX; //该命名空间包含创建ACCESS的类(方法)--解决方案 ==> 引用 ==> 添加引用 ==> 游览找到.dll

  using JRO; //该命名空间包含压缩ACCESS的类(方法)

  public class Access

  ...{

  /**////根据指定的文件名称创建ACCESS数据库

  ///mdbPath:要创件的ACCESS绝对路径

  public void Create( string mdbPath )

  ...{

  if( File.Exists(mdbPath) ) //检查数据库是否已存在

  ...{

  throw new Exception("目标数据库已存在,无法创建");

  }

  // 可以加上密码,这样创建后的数据库必须输入密码后才能打开

  mdbPath = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbPath;

  // 创建一个CatalogClass对象的实例,

  ADOX.CatalogClass cat = new ADOX.CatalogClass();

  // 使用CatalogClass对象的Create方法创建ACCESS数据库

  cat.Create(mdbPath);

  }

  /**////压缩修复ACCESS数据库,mdbPath为数据库绝对路径

  public void Compact( string mdbPath )

  ...{

  if( !File.Exists(mdbPath) ) //检查数据库是否已存在

  ...{

  throw new Exception("目标数据库不存在,无法压缩");

  }

  //声明临时数据库的名称

  string temp = DateTime.Now.Year.ToString();

  temp += DateTime.Now.Month.ToString();

  temp += DateTime.Now.Day.ToString();

  temp += DateTime.Now.Hour.ToString();

  temp += DateTime.Now.Minute.ToString();

  temp += DateTime.Now.Second.ToString() + ".bak";

  temp = mdbPath.Substring(0, mdbPath.LastIndexOf("")+1) + temp;

  //定义临时数据库的连接字符串

  temp2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + temp;

  //定义目标数据库的连接字符串

  mdbPath2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbPath;

  //创建一个JetEngineClass对象的实例

  JRO.JetEngineClass jt = new JRO.JetEngineClass();

  //使用JetEngineClass对象的CompactDatabase方法压缩修复数据库

  jt.CompactDatabase( mdbPath2, temp2 );

  //拷贝临时数据库到目标数据库(覆盖)

  File.Copy( temp, mdbPath, true );

  //最后删除临时数据库

  File.Delete( temp );

  } /**//// 备份数据库,mdb1,源数据库绝对路径; mdb2: 目标数据库绝对路径

  public void Backup( string mdb1, string mdb2 )

  ...{

  if( !File.Exists(mdb1) )

  ...{

  throw new Exception("源数据库不存在");

  }

  try

  ...{

  File.Copy( mdb1, mdb2, true );

  }

  catch( IOException ixp )

  ...{

  throw new Exception(ixp.ToString());

  }

  }

  /**////恢复数据库,mdb1为备份数据库绝对路径,mdb2为当前数据库绝对路径

  public void Recover( string mdb1, string mdb2 )

  ...{

  if( !File.Exists(mdb1) )

  ...{

  throw new Exception("备份数据库不存在");

  }

  try

  ...{

  File.Copy( mdb1, mdb2, true );

  }

  catch( IOException ixp )

  ...{

  throw new Exception(ixp.ToString());

  }

  }

  }

  ******************************************************************************************************

  在BETA2中,。NET提供了以下的NAMESPACE:

  System.Data Namespace

  System.Data.OleDb (和BETA1中已经不同了,所以如果拿BETA1中的程序到BETA2中来运行肯定不可以的)

  如果想讲清楚这些东西,我不认为是我可以作到的,所以我想通过一些具体的程序来把我们对数据库的最基本的操作(SELECT、UPDATE、DELETE、INSERT等)演示一下,其他的还是需要朋友们在学习过程中来慢慢体会了!

  要想操作一个数据库,,不论是那种操作,首先要做的肯定是打开数据库,下面我们以ACCESS数据库来做例子说明如何打开一个数据库连接!在这里我们需要用到的是:System.Data.OleDb.OleDbConnection类!(如果操作SQL数据库,我们最好使用 System.Data.SqlClient.SqlConnection类)

  我先写出我自己使用的程序:

  using System.Data

  using System.Data.OleDb

  public OleDbConnection getConn()

  {

  string connstr="Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source=F:webnotesbookclassleavenotes.mdb";

  OleDbConnection tempconn= new OleDbConnection(connstr);

  return(tempconn);

  }

  相信只要使用过ADO的朋友应该都可以看懂的!我们先定义一个String类型的变量,其中存放了我们连接数据库的连接字符串,然后在定义一个 System.Data.OleDb.OleDbConnection类型的对象并实例化,最后返回这个对象!需要说明一下的是,我并没有把语句: tempconn.Open();放到这个函数中,原因我我稍后在说明,这里只是先提醒一下!

  通过上面的函数,我们就已经得到了类似于ADO中的连接对象Connection了!下面的就是具体操作数据库了!

  在具体讲操作前,我认为有必要先认识一下下面的两个类:

  System.Data.OleDb.OleDbDataAdapter

  System.Data.OleDb.OleDbDataReader

  System.Data.OleDb.OleDbDataAdapter:可以直接和DataSet联系,并操作数据源的,它的功能相对强大一些,因此也比较耗系统资源!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn