我尝试使用以下代码将数据插入表中:
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");
}
我没有任何问题启动程序,但它会停止调试并给我这个错误消息:
"已经有一个名为' UXZona'在数据库"
它跳过try{}
并直接转到catch{}
。关于我做错了什么的任何线索?如果需要,请随时提出更多代码。
答案 0 :(得分:6)
问题在于:
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权限,可能会导致安全问题。