2015-03-19 21 views
0

我正在使用PostgreSQL。我有如下方法,我需要创建一个参数数组并将其传递给下面的方法。我怎样才能做到这一点请建议我如何在PostgreSQL中创建NpgSqlParameterArray

internal static DataTable ExecuteParamerizedSelectcommand(String CommandName,CommandType cmdType,NpgsqlParameter[] param) 
    { 
     DataTable table = new DataTable(); 
     try 
     { 
      NpgsqlConnection con = new NpgsqlConnection(constr); 
      NpgsqlCommand cmd = con.CreateCommand(); 
      cmd.CommandType = cmdType; 
      cmd.CommandText = CommandName; 
      cmd.CommandTimeout = 120; 
      cmd.Parameters.AddRange(param); 

      if(con.State!=ConnectionState.Open) 
      { 
       con.Open(); 
      } 

      using (NpgsqlDataAdapter da= new NpgsqlDataAdapter(cmd)) 
      { 
       table = new DataTable(); 
       da.Fill(table); 
      } 
      con.Close(); 
     } 
     catch { 
      throw; 
     } 
     return table; 
     } 

回答

0

你喜欢这个创建NpgsqlParameter:

NpgsqlParameter p = new NpgsqlParameter("your_parameter_name", NpgsqlDbType.Array | NpgsqlDbType.Text); 
p.value = your_parameter_name; 
cmd.Parameters.Add(p); 

如果你需要通过NpgsqlParameter []作为参数。首先你应该正确地组成你的NpgsqlParameter数组。

例如: 创建新的变量:

new NpgsqlParameter[2]{ 
     new NpgsqlParameter{ ParameterName="your_parameter_name1", Value=val1}, 
     new NpgsqlParameter{ ParameterName="your_parameter_name2", Value=val2} 
     } 

然后将它作为PARAM。

cmd.Parameters.AddRange(param) 

你有什么错误吗?

+0

感谢您的反应,你的方式不适合我的要求请看看我的问题我已经改变了它,你可能会清除我的问题 – user3728743 2015-03-19 13:14:11

+0

是的先生我做过但我有一个错误,像'System.NullReferenceException'“对象引用未设置为对象的实例“。在我的帮助方法中,我做了如下所示的注释 – user3728743 2015-03-20 05:55:47

+0

String query =“select * from t where name =:value1 and psd =:value2”; NpgsqlParameter [] param = new NpgsqlParameter [] {new NpgsqlParameter {ParameterName =“value1”,Value =“ss”},new NpgsqlParameter {ParameterName =“value2”,Value =“1234”} }; postgreHelper.ExecuteNonQuerywithReturnStatement(query,CommandType.Text,param);请帮助我 – user3728743 2015-03-20 05:58:57

相关问题