【问题标题】:SQL query result to variable?SQL查询结果到变量?
【发布时间】:2017-08-31 11:08:12
【问题描述】:

我通常在 VB 中执行此操作,它更容易,这是我第一次使用 C#,我无法弄清楚。我只是想读取一行,检查它是否有行,并将该列中存在的数字分配给StockQuan

    public int StockQuan;
    public int NewAmount;

    public const string ConnectionStringToORACLE = "Provider=OraOLEDB.Oracle.1;Data Source=Souarce;User ID=user;Password=pass;";
    public OleDbDataReader rowread;

    public OleDbDataReader Read_quan(string txtPartNo, int txtAmount)
    {
        var conn = new OleDbConnection(ConnectionStringToORACLE);
        conn.Open();

        string query = "select QUANTITY_IN_STOCK from MPCS.SHOP_INV_STOCK where SI_KEY = ? AND LOCATION = ?";
        var cmd = new OleDbCommand(query, conn);

        cmd.Parameters.AddWithValue("SI_KEY", txtPartNo);
        cmd.Parameters.AddWithValue("LOCATION", "HQ-TC");

        //rowread = cmd.ExecuteReader();
        //rowread.Read();
        //if (rowread.HasRows)
        //{
            //while (rowread.Read())
            //{
                StockQuan = (int)cmd.ExecuteScalar();
            //}
            NewAmount = StockQuan - txtAmount;

        //}
        //else
        //{
        //    MessageBox.Show("Error reading quantity. Check with Administrator", "Error", MessageBoxButton.OK, MessageBoxImage.Warning);
        //}
        return rowread;
    }

我注释掉了大部分内容以简化我出错的地方,现在错误在 (int)cmd.ExecuteScalar(); 上无效

【问题讨论】:

  • 如果你运行上面的代码并且没有匹配的记录(即它返回0行)会发生什么?
  • 您执行 SQL 的方式确实有效,但您可以考虑使用像 github.com/StackExchange/Dapper 这样的轻量级 ORM。它可能会让你的生活更轻松。
  • 数据库中 QUANTITY_IN_STOCK 的类型是什么?

标签: c# sql oracle


【解决方案1】:

尝试关注

 StockQuan = Convert.ToInt32(cmd.ExecuteScalar());

【讨论】:

  • @Boneist 我是,但这样做时我被告知我必须等待 10 分钟才能将其标记为正确答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-04
  • 2019-12-29
相关资源
最近更新 更多