【发布时间】:2014-01-17 19:13:37
【问题描述】:
。如果有人能帮我解决这个问题,我将不胜感激
我正在使用 npgsql 和 c# 开发一个应用程序,当我想从包含具有元素数组的列的表中检索一些信息时,当我想使用这样的查询时问题就开始了:
NpgsqlCommand cmd = new NpgsqlCommand("select * from book_editions", conn);
编译器将包含元素 example({1st,2nd,3d}) 的列显示为“Data.System.String[] 因此我尝试通过使用参数来解决问题.... 如下所示。
NpgsqlConnection conn = new NpgsqlConnection("Server=127.0.0.1;User Id=postgres; " +"Password=admin;Database=library_system;");
conn.Open();
//////string[] options = new string[] { "marketing", "m" }; already tried and failed
ArrayList l = new ArrayList();
l.Add("2th");
l.Add("3th");
NpgsqlParameter p = new NpgsqlParameter("parameterlist", NpgsqlTypes.NpgsqlDbType.Array | NpgsqlTypes.NpgsqlDbType.Text);
NpgsqlCommand cmd = new NpgsqlCommand("select * from book_editions where editions = any (:parameterlist)", conn);
//editions is the column which has the array of elements, its datatype is text
p.Value = l.ToArray();
cmd.Parameters.Add(p);
NpgsqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
Console.Write("{0} \n", dr[0].ToString());
Console.ReadKey();
conn.Close();
当我执行代码时,cmd.ExecuteReader 会抛出这个错误:
npgsql was unhandled
ERROR: 42883: el operador no existe: text[] = text
我得到以下句子作为提示......
Ningún 操作员与 con el nombre y el tipo de los argumentos 一致。 Puede ser necesario agregar conversiones explícitas de tipos。 (那里 不是与名称和参数类型匹配的运算符,它 需要添加显式类型转换
有人知道解决办法吗? :( :( 我已经很努力了。
【问题讨论】:
-
你试过用List
吗? -
没有,如果能给我一个例子,我将不胜感激,非常感谢!