本文主要记录目前比较常用的两种ASP.NET数据库查询和提取模式。
方法一:是利用SQL的查询语句来进行数据库检索,然后利用DataReader提取数据,进行输出。
方法二:是利用ENTITY FRAMEWORK,构建连接,利用Linq语句进行检索查询和输出。
先说方法二:
这种结构相对简单。
首先,在model文件夹中新建数据库连接,获得数据上下文。
然后在控制器中,实例化,并获取泛型集合。
UserInfoEntities ef = new UserInfoEntities();
List<UserList> _list = ef.UserList.ToList();
最后使用linq语句,从集合中检索。
_list = _list.OrderBy(c => c.ID).Skip(int.Parse(LastPageSize)).Take(PageSize).ToList();
return View(_list);
最后返还给view视图。
方法一:
第一步与方法二相同;
第二步是在控制器中,创建sql查询语句,然后通过DataReader把数据读出,赋值给泛型集合。赋值的方法有两种,一个是值对值的赋值,另一个是使用object对象,获取全部数据。
由于我的测试案例相对简单,所以使用了值对值的赋值方法。
UserInfoEntities ef = new UserInfoEntities();
string findSql = "select top " + PageSize + " * from UserList "
+ "where ID not in( select top " + LastPageSize + " ID from MyTestPages order by Id) order by ID";
string constr = "server=.;database=UserInfo;uid=sa;pwd=123456";
SqlConnection mycon = new SqlConnection(constr);
mycon.Open();
SqlCommand mycom = new SqlCommand(findSql, mycon);
SqlDataReader mydr = mycom.ExecuteReader();
List<UserList> _list=new List<UserList>();
while (mydr.Read())
{
UserList userList = new UserList();
//通过值对值的方式,给userList这个类分别赋值
//整体赋值可以通过循环获取object,然后再赋值给泛型
//给id赋值的方式有一下几种
//userList.ID = int.Parse(mydr.GetValue(0).ToString());
//userList.ID = int.Parse(mydr["ID"].ToString());?
userList.ID = int.Parse(mydr[0].ToString());
_list.Add(userList);
}
mydr.Close();
mycon.Close();
return View(_list);