繁体   English   中英

可以使用哪种方法将数据专门从SQL专门插入C#DataGridView?

[英]What method can be used to specifically insert data into your C# DataGridView from SQL?

问题:

代码工作正常,但是,当我启动程序时,我的两个预定义列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属性,但我认为并非如此。

尝试将您的选择更改为:

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结果绑定到当前列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM