插入表时出错

时间:2017-08-10 09:24:34

标签: c# sql

我尝试使用以下代码将数据插入表中:

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{}。关于我做错了什么的任何线索?如果需要,请随时提出更多代码。

1 个答案:

答案 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权限,可能会导致安全问题。