【问题标题】:How can I populate my sql query results into a C# Datagridviewer如何将我的 sql 查询结果填充到 C# Datagridview
【发布时间】:2019-08-28 20:57:13
【问题描述】:

更新: 史蒂夫https://stackoverflow.com/a/57692761/5758150的这个很好的回答 加上需要包括:我的连接字符串中的 Integrated Security=SSPI 已经解决了这个问题。 非常感谢大家的帮助。

我是 C# 新手,这是我的第一个项目。 该代码旨在查询 sql server 表并将结果返回到 windows 窗体上的 datagridviewer 中。 表单编译时没有错误,只是显示一个空白的 datagridviewer。

谁能告诉我我做错了什么? 我检查了服务器名称数据库名称等,它们都是正确的。

using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data;
using System;
using System.Data.SqlClient; //For SQL Connection


namespace Reference_Table_Updater
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }


    void GetList()
    {

        String strConnection = "server;" +
                   "Database='Scratchpad';";

        SqlConnection con = new SqlConnection(strConnection);

        SqlCommand sqlCmd = new SqlCommand();
        sqlCmd.Connection = con;
        sqlCmd.CommandType = CommandType.Text;
        sqlCmd.CommandText = "Select * from dbo.UPDATE_Test";
        SqlDataAdapter sqlDataAdap = new SqlDataAdapter(sqlCmd);

        DataTable dtRecord = new DataTable();
        sqlDataAdap.Fill(dtRecord);
        dataGridView1.DataSource = dtRecord;

    }

    private void Form1_Load()
    {
        GetList();
    }




}



}

【问题讨论】:

  • 分配数据源后是否尝试调用dataGridView1.Refresh();
  • 代码似乎是正确的。但是,该连接字符串似乎是假的,以这种形式它不应该工作,但是在执行 Fill 方法时应该会出错。真正的连接字符串是什么?
  • 是的,没有区别。
  • String strConnection = "server= uk-DEV-dtwh-01\\WH02;" + "Database='Scratchpad';";
  • 我用 \\ 转义了服务器名称中的 \

标签: c# sql


【解决方案1】:

Form_Load 不正确。可能您已经手动添加它并且它从未被调用过。网格当然没有填满。

要调用您的 Form_Load,您需要将其绑定到 Load 事件

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        this.Load += Form_Load;    
    }
    private void Form_Load(object sender, EventArgs e)
    {
        GetList();
    }

当然,事件处理程序与事件的这种绑定通常是使用表单设计器完成的,双击您要处理的事件。 (因此不需要在表单构造函数中编写绑定)

现在,您的 GetList 应该被调用,如果出现错误,它们应该引发异常。 GetList 代码似乎是正确的,除非连接字符串或数据库表有问题。

【讨论】:

  • 好的,所以现在已经到了某个地方,但是正在抛出附加信息:用户“登录失败”。我正在使用 Windows 身份验证,所以有点困惑。
  • 如果您使用 Windows 身份验证,则不应提供用户名和密码。
  • "Integrated Security=SSPI";
  • 是,但没有用户名和密码。
  • ConnectionStrings.com 或创建 UDL 文件并使用它来创建连接字符串,然后将 UDL 文件作为文本文件读取。
【解决方案2】:

这里需要使用用户名和密码 String strConnection = "server;" + "Database='Scratchpad';"; 像这个例子: "SERVER=localhost; user id=root; password=; database=Scratchpad";或者你用的是windows autentication?

【讨论】:

  • windows auth 一路伴侣
  • 是的,请查看原帖顶部的更新。干杯。
猜你喜欢
  • 1970-01-01
  • 2012-07-26
  • 2011-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多