這裏是我的代碼,它的工作方式在數據庫具有表「UserInformation」怎樣才能在數據庫中創建了新的表,如果該表並不存在(C#)
public bool Save()
{
using (SqlConnection connection = new SqlConnection(ConnectionString)
{
connection.Open();
using (SqlTransaction transaction = connection.BeginTransaction())
{
try
{
using (var adapter = new UserInformationTableAdapter())
{
adapter.Connection = connection;
adapter.Transaction = transaction;
var table = new HelloDataSet.UserInformationDataTable();
HelloDataSet.UserInformationRow row = table.NewUserInformationRow();
row.UserName = userName;
row.Password = password;
row.Brithday = brithday;
table.Rows.Add(row);
adapter.Update(table);
transaction.Commit();
return true;
}
}
catch (Exception e)
{
transaction.Rollback();
return false;
}
finally
{
connection.Close();
}
}
}
然而,當沒有表在數據庫中,它不會在數據庫中創建「UserInformation」表,它會跳轉到「adapter.Update(table);」行中的「catch」異常。
所以我的問題是如何在數據庫中創建一個新的表,如果它沒有「UserInformation」表。另外,如果數據庫已經有表「UserInformation」,我可以在該表中添加一個新的「Position」列嗎?
我不確定你在問什麼。你是否試圖將行插入可能不存在的表中?如果表不存在,是否希望數據庫服務器自動創建具有特定字段結構的表? (爲什麼表不在那裏?)我建議使用CREATE TABLE命令或使用交互式工具(如SQL Server Management Studio)創建表。另外,你沒有提到你正在使用什麼樣的數據庫。相應地標記這個問題將提高答案的相關性。 –
我希望數據庫服務器自動創建表。原因是,我將允許用戶選擇數據庫,因此如果用戶切換到新數據庫,我的應用程序應該能夠在新數據庫中創建該表。 –
您將不得不創建您的程序執行的腳本或一系列SQL語句。存儲過程或觸發器已關閉,因爲如果數據庫是新的,它將不會有表或任何代碼來創建表。我會檢查一個表的存在,然後詢問用戶「初始化表(應用程序名稱)?」如果用戶說是,請運行您的腳本或「CREATE TABLE」SQL語句集。 –