如果 table 不存在,如何在数据库中创建新的 table (c#)
How can create a new table in database if the table does not exist (c#)
这是我的代码,当数据库有 table "UserInformation"
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();
}
}
}
但是当数据库中没有table时,不会在数据库中创建"UserInformation"table,会跳转到"catch"中的异常第 "adapter.Update(table);"
行
所以我的问题是,如果数据库中没有 "UserInformation" table,我该如何在数据库中创建一个新的 table。另外,如果数据库已经有 table "UserInformation" 我可以在 table 中添加一个新列 "Position" 吗?
终于得到答案,想分享出来。首先,我不得不说我以错误的方式提出了问题。我真正想要的是我有一个应用程序,这个应用程序与数据库相连。但是,我允许用户切换数据库。因此,当用户切换到新数据库时,我希望应用程序将整个数据库结构(不包括数据)从旧数据库复制到新数据库。此外,如果我在我的应用程序代码中对数据库进行一些更改(可以为一个或多个 table 添加一个新列,或者添加另一个新的 table),我希望所有其他数据库都知道运行更新我的新应用程序代码并进行相同的更改。
所以,这是我的解决方案。我写了一个框架,叫"SchemaManager.",它会在每个数据库中额外创建一个table,这个table包含数据库的版本。所以,每次我 运行 我的应用程序 "SchemaManager" 都会检查我的硬代码数据库版本号和数据库版本号,如果我的硬代码数据库版本号大于数据库版本号,"SchemaManager" 将检查更改并为我进行更新。
我知道我的解决方案不是最好的,但我就是这样做的。如果有人有任何其他解决方案,请与我和其他人分享。
这是我的代码,当数据库有 table "UserInformation"
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();
}
}
}
但是当数据库中没有table时,不会在数据库中创建"UserInformation"table,会跳转到"catch"中的异常第 "adapter.Update(table);"
行所以我的问题是,如果数据库中没有 "UserInformation" table,我该如何在数据库中创建一个新的 table。另外,如果数据库已经有 table "UserInformation" 我可以在 table 中添加一个新列 "Position" 吗?
终于得到答案,想分享出来。首先,我不得不说我以错误的方式提出了问题。我真正想要的是我有一个应用程序,这个应用程序与数据库相连。但是,我允许用户切换数据库。因此,当用户切换到新数据库时,我希望应用程序将整个数据库结构(不包括数据)从旧数据库复制到新数据库。此外,如果我在我的应用程序代码中对数据库进行一些更改(可以为一个或多个 table 添加一个新列,或者添加另一个新的 table),我希望所有其他数据库都知道运行更新我的新应用程序代码并进行相同的更改。
所以,这是我的解决方案。我写了一个框架,叫"SchemaManager.",它会在每个数据库中额外创建一个table,这个table包含数据库的版本。所以,每次我 运行 我的应用程序 "SchemaManager" 都会检查我的硬代码数据库版本号和数据库版本号,如果我的硬代码数据库版本号大于数据库版本号,"SchemaManager" 将检查更改并为我进行更新。
我知道我的解决方案不是最好的,但我就是这样做的。如果有人有任何其他解决方案,请与我和其他人分享。