我希望从mysql数据库文件中选择id为2,4,6的记录数组。我试图将一个整数数组传递给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;
}
这是mysql
CREATE DEFINER = root
@ localhost
程序Photos_GetPhotosByIDs
(在_ids int []中)
BEGIN
从tbl_photos中选择*,其中ID位于_ids;
END
答案 0 :(得分:0)
MySQL中没有数组类型。您可以使用表(临时表)。使用id值填充bale并连接表以获得所需的结果。
答案 1 :(得分:0)
我不确定我的问题是否正确,但我认为您要问的是如何将多个值发送到存储过程的输入参数。
如果这是您要求的内容,以下链接可能有所帮助。不确定MySql中是否存在这样的功能,但在SQL Server中,它被称为&#34;表值参数&#34; - 简称TVP。
TVP允许您将多个值传递到单个输入参数中。希望这会有所帮助:https://msdn.microsoft.com/en-us/library/bb675163(v=vs.110).aspx