sql中查询出两列内容在C#中用什么类型接收的问题?(当然不是要绑定到数据控件上而是赋值给label、text等等)
源起:做项目的时候遇到修改新闻的时候,点击修改进入到修改页面并且把数据库对应的标题,内容都显示在页面上。
最初的苯办法:写上几条sql语句一个值一个值的赋给对应的标题、内容。这样做的缺点太多了。
1.写太多SQL语句、在页面写对应的太多方法真的很不爽哦!很waste time哦!
2.页面和数据库交互太频繁了,每次都要从数据库中查询出来一个一个的赋值,当然性能就降低了!
SQL语句:SELECT (SELECT COUNT(id) FROM tb_comments WHERE blogId=@blogId) as t,title FROM tb_blogs WHERE id=@blogId
解决方案一:ArrayList接收值(不要忘记引入命名空间using System.Collections;)
1 页面方法:
2 ArrayList list = new ArrayList();
3 list = bp.bottomComments(id);
4 if (list.Count == 0)
5 {
6 Response.Write("<script>alert('aa');</script>");
7 }
8 else
9 {
10 string sumId = list[0].ToString();
11 string title = list[1].ToString();
12 lbl.Text = sumId + "条对" + title + "的评论!";
13 }
14 bottomComments方法:
15 public ArrayList bottomComments(int id)
16 {
17 string sql = "proc_bottomComments";
18 sp = new SqlParameter[1];
19 sp[0] = new SqlParameter("@blogId", SqlDbType.Int);
20 sp[0].Value = id;
21 DataSet ds = base.getDataSet(sql, true, sp);
22 for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
23 {
24 int sumId = Convert.ToInt32(ds.Tables[0].Rows[i][0]);
25 string title = ds.Tables[0].Rows[i][1].ToString();
26 }
27 ArrayList list = new ArrayList();
28
29
30 list.Add(sumId.ToString());
31 list.Add(title);
32 return list;
33 }
解决方案二:泛型接收值
1 List<string> list = new List<string>();List<string>
2 DataSet ds = base.getDataSet(sql, true, sp);
3 for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
4 {
5 int sumId = Convert.ToInt32(ds.Tables[i].Rows[0][0]);
6 string title = ds.Tables[0].Rows[i][1];
7 }
8
9 list.Add(sumId.ToString());
10 list.Add(title);
11 return list;