可以使用什么方法专门从SQL向C#DataGridView中插入数据
本文关键字:C#DataGridView 插入 数据 SQL 什么 方法 可以使 | 更新日期: 2023-09-27 18:06:57
问题:
代码运行良好,但是,当我启动程序时,我的两个预定义列Course_ID
和File_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来查询,test1
和test2
,我更喜欢这样:
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结果与当前列相关联。