在网上找了大部都是创建后不能关闭刚创建的数据库,找了很久后找到了这个版本,创建之后可以正确地关闭数据库
using System.Data.OleDb;
using System.IO;
//创建Access数据库文件
string conPath = string.Empty;
string con = string.Empty;
string Sql = string.Empty;
conPath = Program.Userset + "\\" + name + ".mdb";
if (File.Exists(conPath))
{
File.Delete(conPath);
}
//创建加密码为passwords,创建文件时后面的Type=5
con = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + conPath +
";Jet OLEDB:Database Password=passwords;Jet OLEDB:Engine Type=5";
ADOX.CatalogClass cat = new ADOX.CatalogClass();
try
{
cat.Create(con);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(cat.ActiveConnection);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(cat);
cat = null;
GC.WaitForPendingFinalizers();
GC.Collect();
}
catch (Exception ex)
{
if (File.Exists(conPath)) { File.Delete(conPath); }
MessageBox.Show("数据库创建失败,错误原因:" + ex.Message);
return;
}
//打开加密码的数据库文件
con = "Provider=Microsoft.Jet.OLEDB.4.0;";
con = con + "Data Source=" + conPath + ";Jet OLEDB:Database Password=passwords";
OleDbConnection setCon = new OleDbConnection(con);
if (setCon.State == ConnectionState.Closed) { setCon.Open(); }
//创建数据库表,SQL语句中根据不同类型创建不同字段
Sql = @"create table [" + name + "](FileDate DateTime,FileName VarChar,FileType VarChar,ViewPath VarChar,FullPath VarChar)";
OleDbCommand setCmd = new OleDbCommand(Sql, setCon);
try
{
setCmd.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
setCmd.Dispose();
}
if (setCon.State == ConnectionState.Open) { setCon.Close(); }