C#動(dòng)態(tài)創(chuàng)建Access數(shù)據(jù)庫(kù)及密碼的方法
以前工作中需要全新的Access數(shù)據(jù)庫(kù),可以復(fù)制數(shù)據(jù)庫(kù),也可以把新的數(shù)據(jù)庫(kù)放到資源里面,用新數(shù)據(jù)庫(kù)的時(shí)候釋放出來(lái),都感覺(jué)不爽,還是動(dòng)態(tài)生成心理舒服。
生成數(shù)據(jù)庫(kù)要使用ADO,首先添加引用。
using System.IO; using System.Data.OleDb; //連接Access數(shù)據(jù)庫(kù) using ADOX; //引用COM:Microsoft ADO Ext. 2.8 for DDL and Security //添加引用:Microsoft ActioveX Data Objects 2.8 Library

創(chuàng)建數(shù)據(jù)庫(kù):
然后使用ADODB創(chuàng)建數(shù)據(jù)庫(kù),直接看代碼:
string conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName;
//創(chuàng)建數(shù)據(jù)庫(kù)
ADOX.Catalog catalog = new Catalog();
try
{
catalog.Create(conn);
}
catch
{}
//連接數(shù)據(jù)庫(kù)
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; // 必須先設(shè)置字段類型
column.Name = "ID";
column.DefinedSize = 9;
column.Properties["AutoIncrement"].Value = true;
table.Columns.Append(column, DataTypeEnum.adInteger, 0);
//設(shè)置主鍵
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);
}
//此處一定要關(guān)閉連接,否則添加數(shù)據(jù)時(shí)候會(huì)出錯(cuò)
table = null;
catalog = null;
Application.DoEvents();
cn.Close();
創(chuàng)建加密碼數(shù)據(jù)庫(kù):
創(chuàng)建加密數(shù)據(jù)庫(kù)的時(shí)候可把我難住了,因?yàn)樵贏ccess中加密碼的時(shí)候是以獨(dú)占方式打開,然后加密碼。所以總是想創(chuàng)建完數(shù)據(jù)庫(kù)以后再加密,試了試沒(méi)有成功,最后轉(zhuǎn)變一下思想,在生成的時(shí)候加密碼怎么樣,一試果然成功了。
//創(chuàng)建不帶密碼的連接語(yǔ)句 string conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName; //創(chuàng)建加密碼的連接語(yǔ)句,pwd是密碼
更改數(shù)據(jù)庫(kù)密碼:
SQL更改數(shù)據(jù)庫(kù)密碼的語(yǔ)句是:
ALTER DATABASE PASSWORD [NewPassword] [OldPassword]
用OleDbConnection打開數(shù)據(jù)庫(kù)執(zhí)行此SQL語(yǔ)句根本不行,所以我就用ADODB打開數(shù)據(jù)庫(kù)執(zhí)行,但是報(bào)以下錯(cuò)誤:

給Access添加密碼的時(shí)候會(huì)要求以“是以獨(dú)占方式打開”,所以要設(shè)置打開的模式,詳細(xì)說(shuō)明如下:
ADO ConnectModeEnum含義 設(shè)置或返回以下某個(gè) ConnectModeEnum 的值。
常量 說(shuō)明
AdModeUnknown 默認(rèn)值。表明權(quán)限尚未設(shè)置或無(wú)法確定。
AdModeRead 表明權(quán)限為只讀。
AdModeWrite 表明權(quán)限為只寫。
AdModeReadWrite 表明權(quán)限為讀/寫。
AdModeShareDenyRead 防止其他用戶使用讀權(quán)限打開連接。
AdModeShareDenyWrite 防止其他用戶使用寫權(quán)限打開連接。
AdModeShareExclusive 防止其他用戶打開連接。
AdModeShareDenyNone 防止其他用戶使用任何權(quán)限打開連接。
更改數(shù)據(jù)庫(kù)代碼如下:
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); // 執(zhí)行 SQL 語(yǔ)句以更改密碼。 object num; cn.Execute(sql, out num, -1); cn.Close();
如果你要忘了加的密碼,可以使用使用密碼查看工具“破解密碼unaccess”,在代碼里面文件夾里呢。
- c#連接access數(shù)據(jù)庫(kù)操作類分享
- C#編程實(shí)現(xiàn)連接ACCESS數(shù)據(jù)庫(kù)實(shí)例詳解
- C#使用ADO.Net部件來(lái)訪問(wèn)Access數(shù)據(jù)庫(kù)的方法
- C#通過(guò)oledb訪問(wèn)access數(shù)據(jù)庫(kù)的方法
- C#動(dòng)態(tài)創(chuàng)建Access數(shù)據(jù)庫(kù)及表的方法
- C#使用晚綁定來(lái)實(shí)現(xiàn)壓縮Access數(shù)據(jù)庫(kù)的方法
- C# Access數(shù)據(jù)庫(kù)增刪查改的簡(jiǎn)單方法
- c# 連接access數(shù)據(jù)庫(kù)config配置
- 利用C#遠(yuǎn)程存取Access數(shù)據(jù)庫(kù)
- C#數(shù)據(jù)庫(kù)操作類AccessHelper實(shí)例
- C# Oracle數(shù)據(jù)庫(kù)操作類實(shí)例詳解
- C#實(shí)現(xiàn)的ACCESS數(shù)據(jù)庫(kù)操作類完整實(shí)例
相關(guān)文章
C#實(shí)現(xiàn)獲取鼠標(biāo)句柄的方法
這篇文章主要介紹了C#實(shí)現(xiàn)獲取鼠標(biāo)句柄的方法,詳細(xì)的講述了實(shí)現(xiàn)獲取鼠標(biāo)句柄的具體步驟及實(shí)現(xiàn)方法,并附有完整的實(shí)例源碼供大家參考,需要的朋友可以參考下2014-09-09
C#利用PrintDocument定制打印單據(jù)的小例子
這篇文章主要給大家介紹了關(guān)于C#利用PrintDocument定制打印單據(jù)的小例子,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C#具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
Unity中的靜態(tài)批處理和動(dòng)態(tài)批處理操作
這篇文章主要介紹了Unity中的靜態(tài)批處理和動(dòng)態(tài)批處理操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04
unity中點(diǎn)擊某一個(gè)按鈕播放某一個(gè)動(dòng)作的操作
這篇文章主要介紹了unity中點(diǎn)擊某一個(gè)按鈕播放某一個(gè)動(dòng)作的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04
使用C#語(yǔ)言實(shí)現(xiàn)的查詢條件界面展開和收起功能
這篇文章主要介紹了使用C#語(yǔ)言實(shí)現(xiàn)的查詢條件界面展開和收起功能的完美解決方案,需要的朋友可以參考下2016-11-11
Unity使用攝像機(jī)實(shí)現(xiàn)望遠(yuǎn)鏡效果
這篇文章主要為大家詳細(xì)介紹了Unity攝使用像機(jī)實(shí)現(xiàn)望遠(yuǎn)鏡效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11
使用C#連接并讀取MongoDB數(shù)據(jù)庫(kù)
這篇文章介紹了使用C#連接并讀取MongoDB數(shù)據(jù)庫(kù)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03
C#利用Label標(biāo)簽控件模擬窗體標(biāo)題的移動(dòng)及窗體顏色不斷變換效果
Label標(biāo)簽控件相信對(duì)大家來(lái)說(shuō)都不陌生,下面這篇文章主要給大家介紹了關(guān)于C#利用Label標(biāo)簽控件模擬窗體標(biāo)題的移動(dòng)及窗體顏色不斷變換效果的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。2017-12-12

