C#实例:MVC
项目结构
1. 首先设计数据库
create database db_cdchrm; create table tb_amdin ( id int identity, name varchar(50) null, pwd varchar(50) null, quantity int null, constraint PK_TB_AMDIN primary key (id) ) |
2. 创建.net工程项目
2.1配置web.config <appSettings> <add key="dbType" value="sqlserver2000"/> <add key="connStr" value="server=B3C34B6CCA724CA/SQLSERVER2000;database=db_cdchrm;uid=sa;pwd=sa"/> </appSettings> |
3. 整体类结构:
4. 开发DAL层
3.1结构
DataAccess接口代码: using cdchrm.bll; using System.Collections; using System.Collections.Generic; /// <summary> /// DataAccess 的摘要说明 /// </summary> namespace cdchrm.dataAccessLayer { public interface DataAccess { int addAdmin(Admin admin); List<Admin> getAllAdmin(); int updateAdmin(Admin admin); int deleteAdmin(int id); Admin getAdminById(int id); } } DataAccessSqlserver2000代码: using cdchrm.bll; using System.Data.SqlClient; using cdchrm.util; using System.Collections; using System.Collections.Generic; /// <summary> /// DataAccessSqlserver2000 的摘要说明 /// </summary> namespace cdchrm.dataAccessLayer { public class DataAccessSqlserver2000:DataAccessHelper,DataAccess { public DataAccessSqlserver2000() {
}
public int addAdmin(Admin admin) {
//sql语句 string sql = string.Format("insert into tb_amdin(name,pwd,quantity) values('{0}','{1}',{2})", admin.Name, admin.Pwd, admin.Quantity); this.open(); SqlCommand sqlcmd = new SqlCommand(sql,this.getConn()); sqlcmd.ExecuteNonQuery();
close(); return GlobalConst.SUCCESS; }
public List<Admin> getAllAdmin() { List<Admin> list = new List<Admin>(); Admin admin = null; string sql = "select * from tb_amdin"; this.open(); SqlCommand sqlcmd = new SqlCommand(sql, this.getConn()); SqlDataReader sda; sda = sqlcmd.ExecuteReader(); while(sda.Read()){ admin = new Admin(); admin.Id = Convert.ToInt32(sda["id"].ToString()); admin.Name = sda["name"].ToString(); admin.Pwd = sda["pwd"].ToString(); admin.Quantity = Convert.ToInt32(sda["quantity"].ToString()); list.Add(admin); } return list; }
public int updateAdmin(Admin admin) { //sql语句 string sql = string.Format("update tb_amdin set name='{0}',pwd = '{1}',quantity={2} where id = {3}", admin.Name, admin.Pwd, admin.Quantity,admin.Id); this.open(); SqlCommand sqlcmd = new SqlCommand(sql, this.getConn()); sqlcmd.ExecuteNonQuery();
close(); return GlobalConst.SUCCESS; }
public int deleteAdmin(int id) { //sql语句 string sql = string.Format("delete from tb_amdin where id={0}", id); this.open(); SqlCommand sqlcmd = new SqlCommand(sql, this.getConn()); sqlcmd.ExecuteNonQuery();
close(); return GlobalConst.SUCCESS; }
public Admin getAdminById(int id) { Admin admin = new Admin(); string sql = string.Format("select * from tb_amdin where id ={0}", id); this.open(); SqlCommand sqlcmd = new SqlCommand(sql, this.getConn()); SqlDataReader sdr = sqlcmd.ExecuteReader(); while (sdr.Read()) { admin.Id = Convert.ToInt32(sdr["id"].ToString()); admin.Name = sdr["name"].ToString(); admin.Pwd = sdr["pwd"].ToString(); admin.Quantity = Convert.ToInt32(sdr["quantity"].ToString()); } return admin; } } } 工厂类DBFactory: namespace cdchrm.dataAccessLayer { public class DBFactory { private DBFactory() {
}
public static DataAccess getDataAccess() { string dbtype = ConfigurationManager.AppSettings["dbType"]; if (dbtype.Equals("sqlserver2000")) { return new DataAccessSqlserver2000(); } return null; } } } DataAccessHelper代码: using System.Data.SqlClient; /// <summary> /// DataAccessHelper 的摘要说明 /// </summary> namespace cdchrm.dataAccessLayer { public class DataAccessHelper { private string connStr; private SqlConnection conn = null;
public DataAccessHelper() { connStr = ConfigurationManager.AppSettings["connStr"]; }
public SqlConnection getConn() { if (conn == null) { conn = new SqlConnection(connStr); } return conn; }
public void open() { if (conn == null) { conn = new SqlConnection(connStr); } if (conn.State.Equals(ConnectionState.Closed)) { conn.Open(); } }
public void close() { if (conn != null) { conn.Close(); conn = null; } } } } |
4.开发BLL层:
BLLBase代码: using cdchrm.dataAccessLayer; /// <summary> /// BLLBase 的摘要说明 /// </summary> namespace cdchrm.bll { public class BLLBase { protected DataAccess db = null;
public BLLBase() { db = DBFactory.getDataAccess(); }
} } Admin代码 using cdchrm.dataAccessLayer; using System.Collections.Generic; using System.Data.SqlClient; /// <summary> /// Admin 的摘要说明 /// </summary> namespace cdchrm.bll { public class Admin:BLLBase { private int id; private string name; private string pwd; private int quantity;
public Admin() { } public Admin(int id,string name,string pwd) { this.id = id; this.name = name; this.pwd = pwd; }
public int Id { get { return id; } set { id = value; } }
public string Name { get { return name; } set { name = value; } }
public string Pwd { get { return pwd; } set { pwd = value; } }
public int Quantity { get { return quantity; } set { quantity = value; } }
public int addAdmin() { return db.addAdmin(this); }
public List<Admin> getAllAdmin() { return db.getAllAdmin(); }
public int updateAdmin(int id,string name,string pwd,int quantity) { this.id = id; this.name = name; this.pwd = pwd; this.quantity = quantity;
return db.updateAdmin(this); }
public int deleteAdmin(Admin admin) { return db.deleteAdmin(admin.id); }
public Admin getByid(string id) { return db.getAdminById(Convert.ToInt32(id)); } } } |
5.web层:
在web层可是直接使用Admin类传递显示值 |