C#中关于SQL查询语句与显示到listview中的问题
现在有SQL数据库A表a,b,c,d字段,B表a,b,c,d字段。要求一,查询出两个表的所有字段显示到listview中的a,b,c,d列。要求二,查询出A表中的c字段(...
现在有SQL数据库A表a,b,c,d字段,B表a,b,c,d字段。要求一,查询出两个表的所有字段显示到listview中的a,b,c,d列。要求二,查询出A表中的c字段(c字段为varchar类型或有要求也可更改为int类型),将c字段里存放的数字全部相加后存入textbox1中。最好上代码,本人新手,回答的好可加分!
展开
2个回答
展开全部
private void LoadListViewData()
{
//清除所有列
this.lvManager.Columns.Clear();
//设置列的标题
this.lvManager.Columns.Add("登录ID");
this.lvManager.Columns.Add("密码");
this.lvManager.Columns.Add("员工姓名");
this.lvManager.Columns.Add("所属部门");
//设置listview列的宽度
this.lvManager.Columns[0].Width = 100;
this.lvManager.Columns[3].Width = -2;
this.lvManager.Columns[1].Width = 100;
this.lvManager.Columns[2].Width = 100;
//清除原有的项
this.lvManager.Items.Clear();
EmployeeManager emp = new EmployeeManager();
// 定义一个泛型集合List<Manager> lsm来接收所有查询的数据,这个你定义一个Manager类和
//数据库中的字段一致来接收你数据库中的数据。
List<Manager> lsm = emp.ListViewManager();
//通过循环显示集合中的数据,没循环一次显示一行数据。
foreach (Manager item in lsm)
{
//定义listview的项,LoginID就是item对象接收到数据库中的LoginID值,lvManager显示的第一列就是item.LoginID值。
//之后的列就用 lvi.SubItems.Add(“你要添加的该列的值")。比如说:你用SqlDataReader对象dr来接收你查询的数据(非三层架构)。你可以用lvi.Subitems.Add(dr["数据库的列名"]);这便是子项。
ListViewItem lvi = new ListViewItem(item.LoginID);
lvi.SubItems.Add(item.Password);
lvi.SubItems.Add(item.Name);
lvi.SubItems.Add(item.Department);
//最后把lvi这一项添加到listview控件中进行显示。
this.lvManager.Items.Add(lvi);
}
}
这是我做过的一个项目(三层架构的项目),lvManager是一个listview控件的name属性。
EmployeeManager emp = new EmployeeManager();
这个是定义的一个类,它的ListViewManager()方法返回的就是从数据库中查询的数据的泛型集合。我想说的是,从你的问题,你主要看foreach循环中的代码。至于相加,你可以在循环外面定义一个变量为0,在循环中进行累加就可以了。如果还有问题,Call我。
{
//清除所有列
this.lvManager.Columns.Clear();
//设置列的标题
this.lvManager.Columns.Add("登录ID");
this.lvManager.Columns.Add("密码");
this.lvManager.Columns.Add("员工姓名");
this.lvManager.Columns.Add("所属部门");
//设置listview列的宽度
this.lvManager.Columns[0].Width = 100;
this.lvManager.Columns[3].Width = -2;
this.lvManager.Columns[1].Width = 100;
this.lvManager.Columns[2].Width = 100;
//清除原有的项
this.lvManager.Items.Clear();
EmployeeManager emp = new EmployeeManager();
// 定义一个泛型集合List<Manager> lsm来接收所有查询的数据,这个你定义一个Manager类和
//数据库中的字段一致来接收你数据库中的数据。
List<Manager> lsm = emp.ListViewManager();
//通过循环显示集合中的数据,没循环一次显示一行数据。
foreach (Manager item in lsm)
{
//定义listview的项,LoginID就是item对象接收到数据库中的LoginID值,lvManager显示的第一列就是item.LoginID值。
//之后的列就用 lvi.SubItems.Add(“你要添加的该列的值")。比如说:你用SqlDataReader对象dr来接收你查询的数据(非三层架构)。你可以用lvi.Subitems.Add(dr["数据库的列名"]);这便是子项。
ListViewItem lvi = new ListViewItem(item.LoginID);
lvi.SubItems.Add(item.Password);
lvi.SubItems.Add(item.Name);
lvi.SubItems.Add(item.Department);
//最后把lvi这一项添加到listview控件中进行显示。
this.lvManager.Items.Add(lvi);
}
}
这是我做过的一个项目(三层架构的项目),lvManager是一个listview控件的name属性。
EmployeeManager emp = new EmployeeManager();
这个是定义的一个类,它的ListViewManager()方法返回的就是从数据库中查询的数据的泛型集合。我想说的是,从你的问题,你主要看foreach循环中的代码。至于相加,你可以在循环外面定义一个变量为0,在循环中进行累加就可以了。如果还有问题,Call我。
追问
最重要的是如何查询两个SLQ表的的数据显示到一个LISTVIEW里,这个需要SLQ代码啊,你这个没回答么。第二个我先按你的外部定义变量再在FOREACH循环中累加试试!
追答
两个表?如果是联合查询的话,你把代码改成联合查询就可以了啊,我觉得如果这方面你不熟的话,最好自己在网上搜索相关的课题,然后进行系统的学习下,这样对你将来学习也有好处。查询你可以分别查询,比如你查询A表:select * from A表名。查询结果用SqlDatareader dr=cmd.ExcuteReader();接收,这样你就可以用
int count=0
while(dr.Read())//循环遍历每一行数据
{ 。。。
count+=Int.Parse(dr["A表c字段名"]);//这里就可以累加了,dr['字段名']表示的就是当前行“字段名”值,如果这个都不知道,你应该去再研究下ADO.NET。其他的都可以通过这种方式获得你要得值。
。。。}
此时你就获得了这个count值,接下来就是查询第二个表,第二个表的方法是一样的,继续加就可以了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询