我如何在運行時在C#中創建Access數據庫?我如何在運行時在C#中創建Access數據庫?
回答
創建一個空白訪問數據庫並將其存儲在您的資源文件中。
現在,只要你想使用它,從你的資源中獲取數據庫並將其複製到你想要的任何地方,將它重命名爲任何你想要的,然後執行你的數據庫設置腳本來創建默認表並在其中加載值。
您需要做的第一件事是獲得對Microsoft ADO Ext的COM引用。 X.X用於DDL和安全性。 X.X表示您機器上的任何版本。我曾經是2.7版本,但隨着Visual Studio 2008,它被更新爲6.0。
一旦你已經添加了引用,ADOX將被添加到您的代碼中使用區間。
接下來,您將要創建的目錄數據庫。將您希望的文件名插入到以下字符串中,並將其傳遞給CatalogClass。
CatalogClass cat = new CatalogClass();
string tmpStr;
string filename = "Sample.MDB";
tmpStr = "Provider=Microsoft.Jet.OLEDB.4.0;";
tmpStr += "Data Source=" + filename + ";Jet OLEDB:Engine Type=5";
cat.Create(tmpStr);
下一步是爲您的數據庫創建表和列。這是一個非常簡單的操作,如下例所示。
Table nTable = new Table();
nTable.Name = "PersonData";
nTable.Columns.Append("LastName", DataTypeEnum.adVarWChar, 25);
nTable.Columns.Append("FirstName", DataTypeEnum.adVarWChar, 25);
nTable.Columns.Append("Address 1", DataTypeEnum.adVarWChar, 45);
nTable.Columns.Append("Address 2", DataTypeEnum.adVarWChar, 45);
nTable.Columns.Append("City", DataTypeEnum.adVarWChar, 25);
nTable.Columns.Append("State", DataTypeEnum.adVarWChar, 2);
nTable.Columns.Append("Zip", DataTypeEnum.adVarWChar, 9);
cat.Tables.Append(nTable);
最後一步非常重要,否則在關閉應用程序時會出錯。一旦添加了所有的表和列,您將需要正確地釋放com對象並按照正確的順序。
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(nTable);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(cat.Tables);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(cat.ActiveConnection);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(cat);
就是這樣。您現在應該有一個可以寫入的Access數據庫。希望這可以幫助。
嘗試:
using ADOX; //Requires Microsoft ADO Ext. 2.8 for DDL and Security
using ADODB;
public bool CreateNewAccessDatabase(string fileName)
{
bool result = false;
ADOX.Catalog cat = new ADOX.Catalog();
ADOX.Table table = new ADOX.Table();
//Create the table and it's fields.
table.Name = "Table1";
table.Columns.Append("Field1");
table.Columns.Append("Field2");
try
{
cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileName + "; Jet OLEDB:Engine Type=5");
cat.Tables.Append(table);
//Now Close the database
ADODB.Connection con = cat.ActiveConnection as ADODB.Connection;
if (con != null)
con.Close();
result = true;
}
catch (Exception ex)
{
result = false;
}
cat = null;
return result;
}
http://zamirsblog.blogspot.com/2010/11/creating-access-database.html
對於那些不清楚的人:你會發現'Microsoft ADO Ext。對於添加引用中的COM選項卡下的DDL和安全性參考,請參閱2.8,而不是.NET版本。 – cdmckay 2012-12-18 16:46:29
static void IF_EXISTS_DELETE_AND_CREATE(string cn)
{
//cn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =";
//cn += AppDomain.CurrentDomain.BaseDirectory.ToString() + "test.mdb";
try
{
OleDbConnection connection = new OleDbConnection(cn);
object[] objArrRestrict;
objArrRestrict = new object[] { null, null, null, "TABLE" };
connection.Open();
DataTable schemaTable = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, objArrRestrict);
connection.Close();
string[] list;
if(schemaTable.Rows.Count > 0)
{
list = new string[schemaTable.Rows.Count];
int i = 0;
foreach (DataRow row in schemaTable.Rows)
{
list[i++] = row["TABLE_NAME"].ToString();
}
for (i = 0; i < list.Length; i++)
{
if(list[i] == "TEMP")
{
string deletedl = "DROP TABLE TEMP";
using (OleDbConnection conn = new OleDbConnection(cn))
{
using (OleDbCommand cmd = new OleDbCommand(deletedl, conn))
{
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
}
break;
}
}
}
string ddl = "CREATE TABLE TEMP (USERID INTEGER NOT NULL,[ADATE] TEXT(20), [ATIME] TEXT(20))";
using(OleDbConnection conn = new OleDbConnection(cn))
{
using(OleDbCommand cmd = new OleDbCommand(ddl, conn))
{
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
}
}
catch (System.Exception e)
{
string ex = e.Message;
}
}
- 1. 如何創建在Access數據庫
- 2. 如何在運行時在Hibernate中創建數據庫?
- 3. 如何在iPhone運行時在bundle中創建sqlite數據庫?
- 4. 在運行時創建數據庫
- 5. 運行時在C#中創建本地數據庫(Visual Studio)
- 6. 如何在C++中創建數據庫
- 7. 如何運行通過C#在Access中創建表的查詢?
- 8. 如何在運行時使用EF Core創建數據庫表?
- 9. 如何在運行時使用C#在MS Access中創建存儲查詢
- 10. 如何在C#中使用變量在Access數據庫中運行Select語句?
- 11. 在Delphi中在運行時從數據庫表創建按鈕
- 12. 在C#中爲Access數據庫創建查詢(帶功能)
- 13. 使用ODBC在C#中創建Access數據庫
- 14. 運行時創建數據庫異常
- 15. 如何從Access數據庫在C#
- 16. 在Android中運行時創建數據庫
- 17. 如何以編程方式在C#中創建Microsoft Access數據庫?
- 18. 在運行時創建數據類型
- 19. 如何編輯在運行時在C#中創建的控件?
- 20. 如何在運行時在Objective-C中創建協議?
- 21. 如何在運行時從Rails中刪除,創建和遷移數據庫?
- 22. 在數據庫創建完成後,sql如何直線運行?
- 23. 如何在.Net上創建Access數據庫備份?
- 24. C#:無法在我的Microsoft Access數據庫中插入數據
- 25. 如何在運行時創建不同長度的C++數組
- 26. 如何根據數據庫中存在的行數創建jCheckBox?
- 27. 如何在Delphi中使用SQL在Access數據庫中創建計算字段
- 28. 在運行時檢查數據庫名稱和創建數據庫
- 29. 在C#中創建數據庫#
- 30. 在Qt中創建SQLite數據庫(C++)
的[微軟在這裏的文章(http://support.microsoft.com/kb/149558)將幫助您。善良,丹 – 2009-09-07 11:44:12