可以使用什么方法专门从SQL向C#DataGridView中插入数据

本文关键字:C#DataGridView 插入 数据 SQL 什么 方法 可以使 | 更新日期: 2023-09-27 18:06:57

问题:

代码运行良好,但是,当我启动程序时,我的两个预定义列Course_IDFile_Count出现在当时为空的dataGridView中。还有一个空的默认行。

每当我运行查询时,我的dataGridView都会创建一个额外的列和一行。查询的结果进入第一行新的第三列,这很奇怪。

请参阅此处:

http://imgur.com/UBFI8Nz

这是我的代码:

string[] courses = txtBoxCourses.Text.Split(',');
        SqlConnection myConnection = new SqlConnection("user id=userid;" +
                                   "password=password;server=myserver;" +
                                   "Trusted_Connection=no;" +
                                   "connection timeout=30");
        myConnection.Open();
        SqlCommand myCommand = new SqlCommand();           
        SqlDataAdapter adapter = new SqlDataAdapter(myCommand);     
        myCommand.Connection = myConnection;
        DataTable t = new DataTable();
        foreach (string line in courses) 
        {
            myCommand.CommandText = "DECLARE @CourseName varchar(80); Set @CourseName = '"+line+"' SELECT COUNT(*) FROM ( SELECT FILE_ID,PARENT_ID ,PATH_ID,FULL_PATH ,FILE_NAME FROM BBLEARN_cms_doc.dbo.XYF_URLS WHERE FULL_PATH like '/courses/'+@CourseName+'/%') as subquery;";
            adapter.Fill(t);
            dataGridView1.DataSource = t;
        }

我希望用string[] courses列表中的值填充第一列,并使其与foreach语句中查询的结果相对应。例如,如果我使用两个课程ID来查询,test1test2,我更喜欢这样:

Course_ID   file_count
    test1       234
    test2      1478

我已经考虑过使用DataPropertyName属性,但我不认为仅此而已。

可以使用什么方法专门从SQL向C#DataGridView中插入数据

尝试将您的选择更改为:

SELECT @CourseName as Course_ID, COUNT(*) as File_Count FROM ( 
SELECT FILE_ID,PARENT_ID ,PATH_ID,FULL_PATH ,FILE_NAME FROM BBLEARN_cms_doc.dbo.XYF_URLS
WHERE FULL_PATH like '/courses/'+@CourseName+'/%') as subquery;

您当前的查询返回一个整数,而您的网格视图没有看到它附加到任何预定义列。尝试在网格视图中将列与列名混叠。这应该将sql结果与当前列相关联。