C# DataAdapter在填充DataTable时引发错误
我正在尝试使用NpgsqlDataAdapter填充数据表。我已经准备好了我的命令C# DataAdapter在填充DataTable时引发错误,c#,sql,npgsql,dataadapter,C#,Sql,Npgsql,Dataadapter,我正在尝试使用NpgsqlDataAdapter填充数据表。我已经准备好了我的命令 string commandString=@" drop table if exists tempdata; create temp table tempdata as SELECT X X X X from (_query_); SELECT x+x, xx, x-y INTO newTempTable FROM tempdata; 并使用下面的函数在数据表中填充数据 adappg.FillResul
string commandString=@" drop table if exists tempdata;
create temp table tempdata as SELECT X X X X from (_query_);
SELECT x+x, xx, x-y INTO newTempTable FROM tempdata;
并使用下面的函数在数据表中填充数据
adappg.FillResultable发生错误
错误消息是{42P01:relation\tempdata\不存在}
我使用的是NpgSql版本3.0.2.0,VS 2013和Postgres 9.3
但当我在pgadmin的sql编辑器中运行相同的查询时,它运行得很好,并根据需要返回结果
更新:查询在Npgsql 2.0.1.0上运行顺利,但在3.x上运行不顺利这是启动Npgsql 3.x的已知问题,如下所述: 简而言之,您不能创建一个实体(如表)并在同一NpgsqlCommand中使用该实体-只需在单独的命令中发送create table和SELECT即可
请参阅上面的问题以获得解释,它与Npgsql如何与PostgreSQL通信的一些非常低级的细节有关。不幸的是,我们不太可能很快解决这个问题。您需要从哪个表创建tmp表?如果存在tempdata,请尝试这样做删除表;从tbl中选择p_invno、edate、code、product、quantity、unitprice、trancode创建临时表tempdata,为什么要创建临时表来填充数据表,您可以直接使用select语句来填充!我正在尝试从查询返回的结果向临时表插入数据如何显示查询返回的精确结果?我正在编写代码,如CREATE temp table TABLENAME和SELECT Fields from temp table。我有4个以上的命令,如single query。我应该先在不同的查询中创建临时表,然后只向该表填充数据吗?
public DataTable Searchpg(string CommandString, NpgsqlParameter[] param)
{
DataTable ResultTable = new DataTable();
try
{
OpenConnection();
DbCommandpg.CommandText = CommandString;
DbCommandpg.Connection = DatabaseConnectionpg;
DbCommandpg.Parameters.Clear();
if (param != null)
{
DbCommandpg.Parameters.AddRange(param);
}
adappg.SelectCommand = DbCommandpg;
ResultTable.Clear();
adappg.Fill(ResultTable);
}
catch (Exception ex)
{
File.writeException(ex.Message, null);
throw ex;
}
finally
{
DatabaseConnectionpg.Close();
}
return ResultTable;
}