【问题标题】:Get SQL data And show it in a text box?获取 SQL 数据并将其显示在文本框中?
【发布时间】:2011-06-14 09:52:14
【问题描述】:

在过去的几天里,我试图从我的 SQL 表中获取数据并将其放入我的文本框中。

表名:“检查”。

我正在使用的代码:

SqlDataReader myReader = null;

connection = new SqlConnection(System.Configuration.ConfigurationManager
                    .ConnectionStrings["ConnectionString"].ConnectionString);
connection.Open();

var command = new SqlCommand("SELECT * FROM [check]", connection);
myReader = command.ExecuteReader();
while (myReader.Read())
{
    TextBox1.Text = myReader.ToString();
}
connection.Close();

结果我什么也没得到。有谁知道为什么?也许我没有正确调用 SQL?

【问题讨论】:

    标签: c# .net sql sql-server sql-server-2008


    【解决方案1】:
    using (var connection = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
    using (var command = connection.CreateCommand())
    {
        command.CommandText = "SELECT ColumnName FROM [check]";
        connection.Open();
        using (var reader = command.ExecuteReader())
        {
            while (reader.Read())
                TextBox1.Text = reader["ColumnName"].ToString();
        }
    }
    

    一些cmets:

    • 不要使用*,只指定你需要的那些字段
    • 使用using - 更少的代码,保证处理
    • 我假设这是一个测试程序,否则在循环中将 Text 重置为 a 是没有意义的

    【讨论】:

    • +1 为您的 cmets - 每个 C# 数据库开发人员都应该遵循这些 - 永远!
    【解决方案2】:
     TextBox1.Text = myReader["fieldname"].ToString();
    

    我还认为您可以将while 更改为if,因为对于表格中的每一行,您都会覆盖文本框文本!

    【讨论】:

      【解决方案3】:

      试试这个:

      TextBox1.AppendText(myReader["columnname"].ToString());
      

      【讨论】:

      • 我已将代码更改为:protected void Button1_Click(object sender, EventArgs e) { SqlDataReader myReader = null; using (var connection = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString)) using (var command = connection.CreateCommand()) { command.CommandText = "SELECT ItemNow FROM [check]";连接.打开(); while (myReader.Read()) TextBox1.Text = TextBox1.Text + myReader["ItemNow"].ToString(); } 仍然不工作 :( 谢谢大家!
      • @user796862。你评论了一个不同的答案。无论如何使用我指定的 AppendText。
      • @user796862。我没有看到 myReader = command.ExecuteReader();在你最后的评论中。也许这会引起问题。无论如何,您是否检查了 QuickWatch 中 myReader["ItemNow"].ToString() 中的文本?你遇到了什么错误?调试代码并找出出错的行。
      • 我已完成调试,没有任何问题。它说“一切都好”。没有错误。但文本框是空的。我这样做了:myReader = command.ExecuteReader(); command.CommandText = "SELECT [ItemNow] FROM [check]";连接.打开(); while (myReader.Read()) TextBox1.Text = TextBox1.Text +myReader["ItemNow"].ToString();
      • @Alon M. 你需要这样做:TextBox1.AppendText(myReader["ItemNow"].ToString());还要在 Watch 中添加 myReader["ItemNow"].ToString() 的值,并在追加文本的 while 循环内设置断点,以检查正在追加的文本。
      猜你喜欢
      • 2021-05-23
      • 2014-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-14
      • 1970-01-01
      相关资源
      最近更新 更多