我正在尝试在PostgreSQL中使用预处理语句,但它给了我一些非常令人沮丧的错误。
我正在尝试通过MediaID从数据库中选择一条记录。在DB中,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;
令人沮丧的是,如果我将整数错误设置为NpgsqlDbType.Varchar,它就会准备好 - 它只是不会返回任何信息。
有什么想法吗?
答案 0 :(得分:0)
尝试更改此句:
sql.CommandText = "SELECT * FROM Media WHERE 'MediaID' = :MediaID";
进入这个:
sql.CommandText = "SELECT * FROM Media WHERE MediaID = :MediaID";
请注意从MediaID
字段引用的单引号删除。