【问题标题】:How could I show a row from the database to a textbox in Visual Studio 2015如何在 Visual Studio 2015 中将数据库中的一行显示到文本框
【发布时间】:2015-10-15 10:09:47
【问题描述】:

我刚开始使用 Visual Studio,我想知道如何将 maincategory 表的 maincategory_name 列下的第一行回显到 textbox1。我遵循了有关如何通过数据库插入数据的指南,但我想知道的是如何打印出一个,所以我有点困惑我将如何做到这一点,因为知道,我在我的文本框中得到的输出是:System.Data.SqlClient.SqlCommand

namespace TrialForDatabase
{
public partial class Form1 : Form
{

    SqlConnection sc = new SqlConnection("Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename='C:\\Users\\flex\\Documents\\Visual Studio 2015\\Projects\\Inventory\\Inventory\\inventory.mdf';Integrated Security=True;Connect Timeout=30");
    SqlCommand cmd;

    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        sc.Open();
        cmd = new SqlCommand("SELECT maincategory_name FROM maincategory", sc);
        textBox1.Text = cmd.ToString();
        sc.Close();
    }
}
}

【问题讨论】:

  • SqlCommand.ExecuteReader();
  • 您正在打印cmd 变量类型的名称。您应该 执行 命令,从 sql server 获取结果,然后才在文本框中显示结果。建议大家搜索一下C#查询sql server的教程
  • 哦,是的,我忘了我必须查询 sql 语句才能从中得到一些东西。谢谢。

标签: c# database visual-studio visual-studio-2015 mdf


【解决方案1】:

此函数首先创建您的 SQL 命令,然后使用 SqlCommand.ExecuteReader() 执行它,然后使用 SqlDataReader.Read() 检查您是否得到任何结果,然后将结果第一行的第一列显示到文本框:

   private void button1_Click(object sender, EventArgs e)
   {
       sc.Open();
       cmd = new SqlCommand("SELECT maincategory_name FROM maincategory", sc);
       using (var reader = cmd.ExecuteReader()){
           if ( reader.Read() )
           {
              textBox1.Text = reader.GetString(0);
           }
       };

       sc.Close();
   }

有关所用类的更多信息,请参见此处:

https://msdn.microsoft.com/de-de/library/system.data.sqlclient.sqlcommand(v=vs.110).aspx https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader(v=vs.110).aspx

【讨论】:

    【解决方案2】:

    ToString() 通常不是从Object 重新定义的,所以它只打印类的名称。

    您想要做的是打印您的 SQL 命令的结果,为此,您需要......好吧,执行它。

    SqlCommand.ExecuteReader() 将返回一个 SQLDataReader 对象,您可以从该对象中读取行,就像使用简单数组一样。

    因此,如果您真的只想要第一行,则可以快速而肮脏地逃脱:

    private void button1_Click(object sender, EventArgs e)
    {
        sc.Open();
        cmd = new SqlCommand("SELECT maincategory_name FROM maincategory", sc);
        textBox1.Text = cmd.ExecuteReader()[0];
        sc.Close();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-15
      相关资源
      最近更新 更多