简体   繁体   English

MySQL 和 C# 检索记录

[英]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 .为了进一步改进代码,你可以用MySqlDataReaderMySqlConnection的多个using 语句替换你的 try finally 块。 Also MySqlCommand implements IDisposable and should be disposed. MySqlCommand也实现IDisposable并且应该被处理掉。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM