c# - 插入表时出错

标签 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");
}

我启动程序没有任何问题,但它停止了调试并给我这个错误消息:

"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/

相关文章:

sql - 在 MySQL/SQLite 数据库中按路径选择页面

c# - 将\"的字符串拆分成数组

c# - 将 ARGB 拆分为字节值

c# - 在 ASP.NET MVC 3 View 层次结构之间传递的数据

mysql - 使用 `LIKE` 进行查询的操作数计数错误

mysql - 针对给定关系的 SQL 查询

c# - 带附加参数的 WCF REST 文件上传

c# - 如何在 WinForms 中实现这种窗口样式?

sql - PLSQL 触发器错误。 "is mutating, trigger/function may not see it"ORA-04091

sql - SQL Server 和 Oracle 的 EF 和 TransactionScope 无需升级/跨越到 DTC?