2015-03-19 3 views
0

Я использую PostgreSql. У меня есть метод, как показано ниже, мне нужно создать массив параметров и передать его ниже метода. Как я могу сделать это, пожалуйста, предложить мнеКак создать NpgSqlParameterArray в PostgreSQL

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} 
     } 

затем передать его как парам.

cmd.Parameters.AddRange(param) 

есть ли у вас какие-либо ошибки?

+0

спасибо за ваш ответ, ваш способ не соответствует моему требованию, пожалуйста, посмотрите на мой вопрос, я изменил его, вы можете очиститься с моим вопросом – user3728743

+0

да, сэр я сделал, но у меня есть ошибка, например, «System.NullReferenceException» «Объект ссылка не установлена ​​в экземпляр объекта. " В моем методе Помощника вещи, которые я сделал, как показано ниже: – user3728743

+0

Строковый запрос = "select * from t где name =: value1 и psd =: value2"; NpgsqlParameter [] param = new NpgsqlParameter [] {new NpgsqlParameter {ParameterName = "value1", Value = "ss"}, новый параметр NpgsqlParameter {ParameterName = "value2", Value = "1234"} }; postgreHelper.ExecuteNonQuerywithReturnStatement (query, CommandType.Text, param); помогите мне – user3728743

Смежные вопросы