繁体   English   中英

查询不会从npgsql运行,而是在postgresql pgAdmin上运行

[英]Query won't run from npgsql, but runs on postgresql pgAdmin

我在从C#应用程序向Postrges数据库运行简单的插入查询时遇到问题。

这是构建查询的功能:

string push = "INSERT INTO \"Tasks\"( \"TName\", \"Desc\", \"TType\", \"DCreated\", \"DEnd\") VALUES (\'" + this.Name + "\',\'" + this.Descr + "\'," + this.Type + ",\'" + this.StartDate + "\', \'" + this.EndDate + "\');";
                GenericDbClass.ExecutePush(push);

这是传递给数据库的字符串:

INSERT INTO "Tasks"( "TName", "Desc", "TType", "DCreated", "DEnd") VALUES ('dddddd','dddddddddddd',3,'13.04.2015 17:00', '24.04.2015 16:42');

如果我复制该字符串并在pgAdmin中运行它,它就可以正常运行,但是从这里起它什么都没做-没有抛出异常,没有错误,在日志中什么也没有,就像它没有到达服务器一样。

另外,这里是push方法:

public static void ExecutePush(string sql)
    {
        try
        {
            NpgsqlConnection conn = new NpgsqlConnection(GenericDbClass.GetDbConnString());
            conn.Open();
            NpgsqlDataAdapter da = new NpgsqlDataAdapter(sql, conn);
            conn.Close();
        }

        catch (Exception msg)
        {
            MessageBox.Show(msg.ToString());
            throw;
        }
    }

编辑:这是我发现的工作解决方案

public static void ExecutePush(string sql)
    {
        try
        {
            NpgsqlConnection conn = new NpgsqlConnection(GenericDbClass.GetDbConnString());
            conn.Open();
            NpgsqlCommand nc = new NpgsqlCommand(sql, conn);
            nc.ExecuteNonQuery();
            conn.Close();
        }

        catch (Exception msg)
        {
            MessageBox.Show(msg.ToString());
            throw;
        }
    }
NpgsqlDataAdapter da = new NpgsqlDataAdapter(sql, conn);

表示“请创建一个数据适配器,该数据适配器使用作为sql传递的INSERT SQL进行选择”。 那没有什么意义,然后无论如何您什么也不做。

conn.CreateCommand(sql).ExecuteNonQuery();

似乎更像您想要的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM