如何将我的SQL查询结果填充到C#Datagridviewer中

时间:2019-08-28 12:28:53

标签: c# sql

更新: 史蒂夫https://stackoverflow.com/a/57692761/5758150的出色回答 另外需要包括:我的连接字符串中的Integrated Security = SSPI解决了此问题。 非常感谢大家的帮助。

我是C#newb,这是我的第一个项目。 该代码旨在查询sql server表并将结果返回到Windows Form上的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();
    }




}



}

2 个答案:

答案 0 :(得分: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代码似乎是正确的。

答案 1 :(得分:0)

在这里您需要使用用户名和密码 String strConnection = "server;" + "Database='Scratchpad';";像这个例子: "SERVER=localhost; user id=root; password=; database=Scratchpad";还是您正在使用Windows自动认证?