C#動態創建Access數據庫,創建加密碼Access數據庫,更改Access密碼
以前工作中需要全新的Access數據庫,可以復制數據庫,也可以把新的數據庫放到資源里面,用新數據庫的時候釋放出來,都感覺不爽,還是動態生成心理舒服。
生成數據庫要使用ADO,首先添加引用。
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創建數據庫,直接看代碼:
1: string conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName;
2:
3: //創建數據庫
4: ADOX.Catalog catalog = new Catalog();
5: try
6: {
7: catalog.Create(conn);
8: }
9: catch
10: {}
11:
12:
13: //連接數據庫
14: ADODB.Connection cn = new ADODB.Connection();
15: cn.Open(conn, null, null, -1);
16: catalog.ActiveConnection = cn;
17:
18: //新建表
19: ADOX.Table table = new ADOX.Table();
20: table.Name = "AdPlayList";
21:
22: ADOX.Column column = new ADOX.Column();
23: column.ParentCatalog = catalog;
24: column.Type = ADOX.DataTypeEnum.adInteger; // 必須先設置字段類型
25: column.Name = "ID";
26: column.DefinedSize = 9;
27: column.Properties["AutoIncrement"].Value = true;
28: table.Columns.Append(column, DataTypeEnum.adInteger, 0);
29: //設置主鍵
30: table.Keys.Append("PrimaryKey", ADOX.KeyTypeEnum.adKeyPrimary, "ID", "", "");
31:
32: table.Columns.Append("FileName", DataTypeEnum.adVarWChar, 50);
33: table.Columns.Append("FileDate", DataTypeEnum.adDate, 0);
34: table.Columns.Append("FileSize", DataTypeEnum.adInteger, 9);
35: table.Columns.Append("OrderID", DataTypeEnum.adInteger, 9);
36: table.Columns.Append("Sha1", DataTypeEnum.adVarWChar, 50);
37:
38: try
39: {
40: catalog.Tables.Append(table);
41: }
42: catch (Exception ex)
43: {
44: MessageBox.Show(ex.Message);
45: }
46: //此處一定要關閉連接,否則添加數據時候會出錯
47:
48: table = null;
49: catalog = null;
50: Application.DoEvents();
51: cn.Close();
創建加密碼數據庫:
創建加密數據庫的時候可把我難住了,因為在Access中加密碼的時候是以獨占方式打開,然后加密碼。所以總是想創建完數據庫以后再加密,試了試沒有成功,最后轉變一下思想,在生成的時候加密碼怎么樣,一試果然成功了。
1: //創建不帶密碼的連接語句
2: string conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName;
3: //創建加密碼的連接語句,pwd是密碼
4: string conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + "; Jet OLEDB:Database Password=" + Pwd + ";Jet OLEDB:Engine Type=5";
更改數據庫密碼:
SQL更改數據庫密碼的語句是:
用OleDbConnection打開數據庫執行此SQL語句根本不行,所以我就用ADODB打開數據庫執行,但是報以下錯誤:
給Access添加密碼的時候會要求以“是以獨占方式打開”,所以要設置打開的模式,詳細說明如下:
ADO ConnectModeEnum含義 設置或返回以下某個 ConnectModeEnum 的值。
常量 說明
AdModeUnknown 默認值。表明權限尚未設置或無法確定。
AdModeRead 表明權限為只讀。
AdModeWrite 表明權限為只寫。
AdModeReadWrite 表明權限為讀/寫。
AdModeShareDenyRead 防止其他用戶使用讀權限打開連接。
AdModeShareDenyWrite 防止其他用戶使用寫權限打開連接。
AdModeShareExclusive 防止其他用戶打開連接。
AdModeShareDenyNone 防止其他用戶使用任何權限打開連接。
更改數據庫代碼如下:
1: string conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + "; Jet OLEDB:Database password=" + openpwd;
2: string sql = "ALTER DATABASE PASSWORD " + newpwd + " " + openpwd;
3: ADODB.Connection cn = new ADODB.Connection();
4: cn.Mode = ADODB.ConnectModeEnum.adModeShareExclusive;
5: cn.Open(conn, null, null, -1);
6: // 執行 SQL 語句以更改密碼。
7: object num;
8: cn.Execute(sql, out num, -1);
9: cn.Close();
如果你要忘了加的密碼,可以使用使用密碼查看工具“破解密碼unaccess”,在代碼里面文件夾里呢。
http://cid-4b517bbe6c0b58a0.office.live.com/self.aspx/.Public/cnblogsCsharp/CreateAccess.rar