DBMNG数据库管理与应用

科学是实事求是的学问,来不得半点虚假。
当前位置:首页 > Access > 应用案例

详解C#动态创建Access数据库及密码

  以前工作中需要全新的Access数据库,可以复制数据库,也可以把新的数据库放到资源里面,用新数据库的时候释放出来,都感觉不爽,还是动态生成心理舒服。

  生成数据库要使用ADO,首先添加引用。

  using System.IO;

  using System.Data.OleDb; //连接Access数据库

  using ADOX;

  //引用COM:Microsoft ADO Ext. 2.8 for DDL and Security

  //添加引用:Microsoft ActioveX Data Objects 2.8 Library



  创建数据库:

  然后使用ADODB创建数据库,直接看代码:

  string conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName;

  //创建数据库

  ADOX.Catalog catalog = new Catalog();

  try

  {

  catalog.Create(conn);

  }

  catch

  {}

  //连接数据库

  ADODB.Connection cn = new ADODB.Connection();

  cn.Open(conn, null, null, -1);

  catalog.ActiveConnection = cn;

  //新建表

  ADOX.Table table = new ADOX.Table();

  table.Name = "AdPlayList";

  ADOX.Column column = new ADOX.Column();

  column.ParentCatalog = catalog;

  column.Type = ADOX.DataTypeEnum.adInteger; // 必须先设置字段类型

  column.Name = "ID";

  column.DefinedSize = 9;

  column.Properties["AutoIncrement"].Value = true;

  table.Columns.Append(column, DataTypeEnum.adInteger, 0);

  //设置主键

  table.Keys.Append("PrimaryKey", ADOX.KeyTypeEnum.adKeyPrimary, "ID", "", "");

  table.Columns.Append("FileName", DataTypeEnum.adVarWChar, 50);

  table.Columns.Append("FileDate", DataTypeEnum.adDate, 0);

  table.Columns.Append("FileSize", DataTypeEnum.adInteger, 9);

  table.Columns.Append("OrderID", DataTypeEnum.adInteger, 9);

  table.Columns.Append("Sha1", DataTypeEnum.adVarWChar, 50);

  try

  {

  catalog.Tables.Append(table);

  }

  catch (Exception ex)

  {

  MessageBox.Show(ex.Message);

  }

  //此处一定要关闭连接,否则添加数据时候会出错

  table = null;

  catalog = null;

  Application.DoEvents();

  cn.Close();

  创建加密码数据库:

  创建加密数据库的时候可把我难住了,因为在Access中加密码的时候是以独占方式打开,然后加密码。所以总是想创建完数据库以后再加密,试了试没有成功,最后转变一下思想,在生成的时候加密码怎么样,一试果然成功了。

  //创建不带密码的连接语句

  string conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName;

  //创建加密码的连接语句,pwd是密码

  更改数据库密码:

  SQL更改数据库密码的语句是:

  ALTER DATABASE PASSWORD [NewPassword] [OldPassword]

  用OleDbConnection打开数据库执行此SQL语句根本不行,所以我就用ADODB打开数据库执行,但是报以下错误:



  给Access添加密码的时候会要求以“是以独占方式打开”,所以要设置打开的模式,详细说明如下:

  ADO ConnectModeEnum含义 设置或返回以下某个 ConnectModeEnum 的值。

  常量 说明

  AdModeUnknown 默认值。表明权限尚未设置或无法确定。

  AdModeRead 表明权限为只读。

  AdModeWrite 表明权限为只写。

  AdModeReadWrite 表明权限为读/写。

  AdModeShareDenyRead 防止其他用户使用读权限打开连接。

  AdModeShareDenyWrite 防止其他用户使用写权限打开连接。

  AdModeShareExclusive 防止其他用户打开连接。

  AdModeShareDenyNone 防止其他用户使用任何权限打开连接。

  更改数据库代码如下:

  string conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Jet OLEDB:Database password=" + openpwd;

  string sql = "ALTER DATABASE PASSWORD " + newpwd + " " + openpwd;

  ADODB.Connection cn = new ADODB.Connection();

  cn.Mode = ADODB.ConnectModeEnum.adModeShareExclusive;

  cn.Open(conn, null, null, -1);

  // 执行 SQL 语句以更改密码。

  object num;

  cn.Execute(sql, out num, -1);

  cn.Close();

  如果你要忘了加的密码,可以使用使用密码查看工具“破解密码unaccess”,在代码里面文件夹里呢。
本站文章内容,部分来自于互联网,若侵犯了您的权益,请致邮件chuanghui423#sohu.com(请将#换为@)联系,我们会尽快核实后删除。
Copyright © 2006-2023 DBMNG.COM All Rights Reserved. Powered by DEVSOARTECH            豫ICP备11002312号-2

豫公网安备 41010502002439号