【问题标题】:Query Sql to return value查询Sql返回值
【发布时间】:2013-11-19 14:12:03
【问题描述】:

我想编写 Query 以在 MessageBox 中显示值,但事实并非如此:

SqlDataReader myReader = null;
SqlCommand myCommand = new SqlCommand("select BillNumber from BillData", cn);
cn.Open();
myReader = myCommand.ExecuteReader();
MessageBox.Show(myReader.ToString());
cn.Close();

【问题讨论】:

  • C# 还是 Java?你应该只选择一个。
  • 看起来像 C#。我试图编辑问题以从标签中删除 Java。

标签: c# sql sqldatareader


【解决方案1】:

你需要这样做:

myReader.GetString(0);

但是,这里还需要做更多的事情。您需要正确利用 ADO.NET 对象:

var sql = "select BillNumber from BillData";
using (SqlConnection cn = new SqlConnection(cString))
using (SqlCommand cmd = new SqlCommand(sql, cn))
using (SqlDataReader rdr = cmd.ExecuteReader())
{
    rdr.Read();
    MessageBox.Show(rdr.GetString(0));
}

【讨论】:

  • 执行 rdr 后需要rdr.Read() 来加载第一行。
【解决方案2】:

当你只想要一个返回值时,你可以像这样使用ExecuteScalar()

SqlCommand myCommand = new SqlCommand("select BillNumber from BillData", cn);
cn.Open();
string return_value = myCommand.ExecuteScalar().ToString();
MessageBox.Show(return_value);
cn.Close();

【讨论】:

    【解决方案3】:
    SqlDataReader myReader = null;
    SqlCommand myCommand = new SqlCommand("select BillNumber from BillData", cn);
    cn.Open();
    myReader = myCommand.ExecuteReader();
    myReader.Read();
    MessageBox.Show(myReader["BillNumber"].ToString());
    cn.Close();
    

    【讨论】:

      猜你喜欢
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-19
      • 1970-01-01
      • 2021-12-24
      相关资源
      最近更新 更多