我正在尝试使用以下代码将数据插入表中:
try
{
conn.ConnectionString = "connection_string";
conn.Open();
using (SqlCommand command = new SqlCommand("CREATE TABLE UXZona(IDZona int,Morada char(50));", conn))
command.ExecuteNonQuery();
SqlCommand insertCommand = new SqlCommand("INSERT INTO UXZona(FirstColumn, SecondColumn) VALUES (@0, @1)", conn);
}
catch (Exception)
{
SqlCommand cmd = new SqlCommand("create table UXZona(IDZona int NOT NULL, Morada varchar(50) NOT NULL);", conn);
conn.Open();
cmd.ExecuteNonQuery();
Console.WriteLine("Tabela criada com sucesso");
}
我启动程序没有任何问题,但它停止了调试并给我这个错误消息:
"There is already an object named 'UXZona' in the database"
它跳过 try{}
并直接转到 catch{}
。关于我做错了什么的任何线索?如果需要,请随时索取更多代码。
最佳答案
问题出在这里:
SqlCommand command = new SqlCommand("CREATE TABLE UXZona(IDZona int,Morada char(50));", conn)
你应该检查对象是否已经存在:
SqlCommand command = new SqlCommand("IF OBJECT_ID('UXZona', 'U') IS NULL CREATE TABLE UXZona(IDZona int,Morada char(50));", conn)
我还会重新考虑您在运行时创建数据库对象的方法。它需要 DDL 权限并可能导致安全问题。
关于c# - 插入表时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45609566/