c# - 有什么想法可以缩短这段代码吗?

标签 c# mysql select

string menuRecipe = "SELECT * FROM recipelist WHERE menu_ID = '" + menuID + "'";
MySqlCommand recipeCmd = new MySqlCommand(menuRecipe, db.mycon);
MySqlDataReader recipeDr = recipeCmd.ExecuteReader();
string[] info = new string[8];
while (recipeDr.Read())
{
    info[1] = (recipeDr["recipe_ID"].ToString());
    info[2] = (recipeDr["stock_ID"].ToString());
    info[4] = (recipeDr["recipe_quantity"].ToString());
    string stockName = "SELECT stock_name FROM stocksdb WHERE stock_ID = '" + info[2] + "'";
    cmd = new MySqlCommand(stockName, db.mycon);
    MySqlDataReader nameDr = cmd.ExecuteReader();
    while (nameDr.Read())
    {
        info[3] = (nameDr["stock_name"].ToString());
    }
    this.recipeList.Items.Add(new ListViewItem(new string[] { info[1], info[2], info[3], info[4] }));
}

我主要想减少使用多个 SQL 命令字符串的必要,尽管我不知道如何以及如何将它们隔离到各自的位置,因为有些可能会困惑。

最佳答案

您可以将查询更改为

SELECT r.*, s.stock_name FROM recipelist r
LEFT OUTER JOIN stocksdb s ON r.stock_ID = s.stock_ID
WHERE menu_ID = @parameter

关于c# - 有什么想法可以缩短这段代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13964760/

相关文章:

c# - 需要获取当前网络服务器名称

java - 在 MySQL 和 Glassfish 中保存 ZonedDateTime

php - 具有多个一对多到同一张表的 Eloquent 模型

mysql - 需要优化一个PHP框架的mysql查询

sql-server - SQL 查询改进 - 使用 max 和 groupby 选择

c# - 无法断言 MsTest 单元测试中的集合内容

c# - wcf 将枚举反序列化为字符串

c# - MVC 4 - 未触发 HttpPost

r - 在 R 中的 select 操作符中使用 %in%

SQl 选择特定列但使用 *