查询不会从 npgsql 运行,但在 postgresql pgAdmin 上 运行s
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 中它可以正常工作,但从这里它什么都不做 - 没有抛出异常,没有错误,日志中没有任何内容,就好像它只是没有到达服务器。
另外这里是推送方法:
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);
表示"Please create a data-adaptor that uses the INSERT
SQL passed as sql
to do a selection"。这没有多大意义,而且无论如何你都不用它做任何事情。
conn.CreateCommand(sql).ExecuteNonQuery();
看起来更像你想要的。
我在从我的 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 中它可以正常工作,但从这里它什么都不做 - 没有抛出异常,没有错误,日志中没有任何内容,就好像它只是没有到达服务器。
另外这里是推送方法:
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);
表示"Please create a data-adaptor that uses the INSERT
SQL passed as sql
to do a selection"。这没有多大意义,而且无论如何你都不用它做任何事情。
conn.CreateCommand(sql).ExecuteNonQuery();
看起来更像你想要的。