[英]MySQL and C# retrieving records
I am wanting to have the values from the two select statements returned via stored procedure.我希望通过存储过程返回两个 select 语句中的值。 I can have one statement returned when its in a stored procedure on its own, but it wont work when two '.read' are present.我可以在它自己的存储过程中返回一个语句,但是当存在两个“.read”时它不会工作。
private void viewLeaderboard(int pgamenumber)
{
MySqlCommand cmd = new MySqlCommand("viewLeaderboard", coon); // Select stored proecdure name
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("pGameNumber", pgamenumber); // Add a parameter
coon.Open();
MySqlDataReader myReader;
myReader = cmd.ExecuteReader();
try
{
while (myReader.Read())
{
characterList.Add(myReader.GetString("CharacterName"));
characterScoreList.Add(myReader.GetString("CharacterScore"));
}
}
finally
{
myReader.Close();
coon.Close();
}
}
DELIMITER; ;
CREATE DEFINER =`root`@`localhost` PROCEDURE `viewLeaderBoard`(pGameNumber INT(50))
BEGIN
SELECT CharacterScore FROM tbl_character WHERE GameID = pGameNumber;
SELECT CharacterName FROM tbl_character WHERE GameID = pGameNumber;
END; ;
DELIMITER;
Merge the two sql statements inside the stored procedure into a single query (in SQL you can select multiple fields in a SELECT statement):将存储过程中的两个 sql 语句合并为一个查询(在 SQL 中,您可以 Z99938282F04071859941E18F16EFZCF42Z 语句中的多个字段:
SELECT CharacterScore, CharacterName FROM tbl_character WHERE GameID = pGameNumber;
Then you should be able to read it properly without code change.然后你应该能够在不更改代码的情况下正确阅读它。
To further improve the code, you can replace your try finally block with multiple using statements for MySqlDataReader
, MySqlConnection
.为了进一步改进代码,你可以用MySqlDataReader
和MySqlConnection
的多个using 语句替换你的 try finally 块。 Also MySqlCommand
implements IDisposable
and should be disposed. MySqlCommand
也实现IDisposable
并且应该被处理掉。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.