2017-04-04 3 views
0

mysqlデータベースファイルからIDが2,4,6のレコードの配列を選択したいとします。私は整数の配列をMySQLのストアプロシージャに渡そうとしています。しかし、私は働くストアドプロシージャを作成することに失敗します。MySql select ...にパラメータの配列を渡す方法

1つを構成するのに役立ちますか?

これは、これがMySQLの

あるC#コード

public static List<PhotoComment> GetPhotos(int[] _ids) 
    { 
     MySqlConnection _con = Generals.GetConnnection(); 
     List<PhotoComment> _comments = new List<PhotoComment>(); 
     try 
     { 
      MySqlCommand _cmd = new MySqlCommand("Photos_GetPhotosByIDs", _con); 
      _cmd.CommandType = CommandType.StoredProcedure; 
      _cmd.Parameters.AddWithValue("@_ids", _ids); 

      _con.Open(); 
      MySqlDataReader _reader = _cmd.ExecuteReader(); 
      while (_reader.Read()) 
      { 
       PhotoComment _comment = new PhotoComment(_reader.GetInt32("cID"), _reader.GetInt32("cFID"), _reader.GetString("cUser"), _reader.GetString("cContent"), _reader.GetDateTime("cDate"), _reader.GetBoolean("cChecked")); 
       _comments.Add(_comment); 
      } 
      _con.Close(); 
     } 
     catch (Exception _ex) 
     { 
      _con.Close(); 
      ReportMgr.ReportException(_ex.Message); 
     } 
     return _comments; 
    } 

ある= rootlocalhost @ PROCEDURE Photos_GetPhotosByIDsをDEFINERをCREATEは(_idsの[] INT)

*が選択BEGIN tbl_photosから_id内のID。

終了

+0

私たちとコードを共有することはできますか? –

答えて

0

MySQLには配列型はありません。代わりにテーブル(一時テーブル)を使用できます。ベールをid値で埋め、テーブルを結合して望みの結果を得る。

0

質問が正しく表示されているかどうかはわかりませんが、あなたが求めているのは、ストアドプロシージャの入力パラメータに複数の値を送信する方法です。

これがあなたが求めているのであれば、次のリンクが役に立つかもしれません。そのような機能がMySqlではなくSQL Serverに存在するかどうかはわかりませんが、これは「テーブル値のパラメータ」と呼ばれています。

TVPでは、複数の値を1つの入力パラメータに渡すことができます。これが役立つことを願って:https://msdn.microsoft.com/en-us/library/bb675163(v=vs.110).aspx

関連する問題