2010-10-16 131 views
1

我試圖在PostgreSQL中使用準備好的語句,但它給了我一些相當令人沮喪的錯誤。PostgreSql錯誤:22P02:整數的輸入語法無效

我試圖從數據庫中選擇一個單獨的記錄,通過MediaID。在數據庫中,MediaID是一個串行整數。在類結構中,它是一個int。

但是,當我調用sql.Prepare()時,它告訴我MediaID的輸入語法無效。我不明白這是怎麼回事。

NpgsqlCommand sql = mediaRepository.CreateCommand(); 

sql.CommandText = "SELECT * FROM Media WHERE 'MediaID' = :MediaID"; 
sql.Parameters.Add(new NpgsqlParameter("MediaID", NpgsqlDbType.Integer)); 
sql.Prepare(); 
sql.Parameters["MediaID"].Value = id; 

令人沮喪的是,如果我設置miscast的int用作NpgsqlDbType.Varchar,它準備就好了 - 它只是不返回任何信息。

任何想法?

回答

0

嘗試改變這樣一句話:

sql.CommandText = "SELECT * FROM Media WHERE 'MediaID' = :MediaID"; 

進入這個:

sql.CommandText = "SELECT * FROM Media WHERE MediaID = :MediaID"; 

注單去除從MediaID場報價。

+0

當我這樣做時,它不能再找到coloumn「MediaID」。 – andrewheins 2010-10-16 16:48:01

+1

如果你有混合大小寫的名字,引用它,但用雙引號而不是撇號。 – 2010-10-16 19:03:54

+0

這是否意味着我應該避免與PostgreSQL混合使用大小寫名稱?這是約定嗎? – andrewheins 2010-10-16 20:40:16

相關問題