[英]Weird issue with hasMany in Grails using PostgreSQL. “ERROR: column <column_name> does not exist”
[英]Column <<column_name>> not found when using ADO-NET connection for Postgresql in insert query
我在為 PostgreSQL 使用 ADO.NET 連接時遇到問題。我已經嘗試使用 PSQLODBC 驅動程序 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>>;
}
}
但是當我使用 Insert 查詢時,它無法檢查列名,即使列存在於我的 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>>;
}
}
當我調試此行時,出現此錯誤:
錯誤 [42703] 錯誤:未找到列 <>,執行查詢時出錯
是的,經過多次研究,我得到了答案。 因為我使用 PostgreSQL ODBC,所以查詢參數沒有在查詢中使用@<name>
,而是使用?
,所以你需要像這樣制定查詢
INSERT INTO <TABLE_NAME> (<COLUMNS>) VALUE ?
並調用參數
cmd.AddWithValue("@<name>",<value>)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.