Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
列<&书信电报;列名称>&燃气轮机;在插入查询中使用Postgresql的ADO-NET连接时未找到_Postgresql_Ssis_Ado.net - Fatal编程技术网

列<&书信电报;列名称>&燃气轮机;在插入查询中使用Postgresql的ADO-NET连接时未找到

列<&书信电报;列名称>&燃气轮机;在插入查询中使用Postgresql的ADO-NET连接时未找到,postgresql,ssis,ado.net,Postgresql,Ssis,Ado.net,我在为PostgreSQL使用ADO.NET连接时遇到问题。我使用PSQLDBC驱动程序12.000.000(ANSI和Unicode)尝试了此查询。我使用PostgreSQL v.9.5。我注意到列名的名称中有“\” 当我使用Select查询时,连接成功地执行了它。查询返回我想要的变量 using (OdbcConnection conn = (OdbcConnection)Dts.Connections["XXX"].AcquireConnection(Dts.Trans

我在为PostgreSQL使用ADO.NET连接时遇到问题。我使用PSQLDBC驱动程序12.000.000(ANSI和Unicode)尝试了此查询。我使用PostgreSQL v.9.5。我注意到列名的名称中有“\”

当我使用Select查询时,连接成功地执行了它。查询返回我想要的变量

using (OdbcConnection conn = (OdbcConnection)Dts.Connections["XXX"].AcquireConnection(Dts.Transaction))
{
    try
    {
         if (conn.State != ConnectionState.Open)
         {
             conn.Open();
         }
    }
    catch (Exception e)
    {
        String err = e.Message.ToString();
        Console.WriteLine(err);
    }

    try
    {
        OdbcCommand cmd = new OdbcCommand();
        cmd.Connection = conn;
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "SELECT XX FROM <<table>> where <<params>>";

        ...
        OdbcDataReader rdd = cmd.ExecuteReader();

        while (rdd.Read())
        {
            <<read operation here>>;
        }

        conn.Close();
    }
    catch (Exception ers)
    {
        <<catch operation here>>;
    }
}
使用(OdbcConnection conn=(OdbcConnection)Dts.Connections[“XXX”].AcquireConnection(Dts.Transaction))
{
尝试
{
如果(连接状态!=连接状态打开)
{
conn.Open();
}
}
捕获(例外e)
{
字符串err=e.Message.ToString();
控制台写入线(错误);
}
尝试
{
OdbcCommand cmd=新的OdbcCommand();
cmd.Connection=conn;
cmd.CommandType=CommandType.Text;
cmd.CommandText=“从何处选择XX”;
...
OdbcDataReader rdd=cmd.ExecuteReader();
while(rdd.Read())
{
;
}
康涅狄格州关闭();
}
捕获(异常捕获器)
{
;
}
}
但是当我使用Insert query时,它无法检查列名,即使该列存在于我的PostgreSQL表中:

 using (OdbcConnection conn2 = (OdbcConnection)Dts.Connections["OJK_REPORTING_DEV"].AcquireConnection(Dts.Transaction))
                {
                    try
                    {
                        if (conn2.State != ConnectionState.Open)
                        {
                            conn2.Open();
                        }
                    }
                    catch (Exception e)
                    {
                        string x = e.Message.ToString();
                    }

                    try
                    {
                        OdbcCommand cmd = new OdbcCommand();
                        cmd.Connection = conn2;
                        cmd.CommandType = CommandType.Text;
                        cmd.CommandText = "INSERT INTO <<table>>(<<column>>)VALUES(<<params>>)";
                        <<cmd.Parameters.AddWithValue here>>;
                        cmd.ExecuteNonQuery();
                        conn2.Close();
                    }
                    catch (Exception e)
                    {
                        <<exception catch here>>;
                    }
                }
使用(OdbcConnection conn2=(OdbcConnection)Dts.Connections[“OJK_REPORTING_DEV”]。获取连接(Dts.Transaction))
{
尝试
{
if(conn2.State!=ConnectionState.Open)
{
conn2.Open();
}
}
捕获(例外e)
{
字符串x=e.Message.ToString();
}
尝试
{
OdbcCommand cmd=新的OdbcCommand();
cmd.Connection=conn2;
cmd.CommandType=CommandType.Text;
cmd.CommandText=“插入()值()”;
;
cmd.ExecuteNonQuery();
conn2.Close();
}
捕获(例外e)
{
;
}
}
调试此行时,出现以下错误:

错误[42703]错误:未找到列,执行查询时出错


对,经过几次研究,我得到了答案。由于我使用PostgreSQL ODBC,因此查询参数在查询中没有使用
@
,而是使用
,因此您需要像下面这样对查询进行公式化

INSERT INTO <TABLE_NAME> (<COLUMNS>) VALUE ?
插入()值?
并调用参数

cmd.AddWithValue("@<name>",<value>)
cmd.AddWithValue(“@”,)