Asp.Net实现增删改以及分页例子一

前天在项目组做了一个关于C#与Asp.Net的报告,说是报告,其实心里面比较惭愧,自己知道的那些东西,怎么能去给人家做报告,不过这是经理的意思,所以我也就~~~。准备了一个小例子,实现对一张表进行增,删,改以及分页操作。项目组的同事都很感慨,微软的东西实在是为程序员想的太多了。具体例子和幻灯片在附件里面提供下载。
下面将例子部分关键代码列出来:
由于我使用的是SQL Server 2000数据库,所以我这里就用pubs库里面的jobs表作为例子。
首先是连接数据库,在Web.config里面配置连接SQL数据库,这里其实和在Struts里面的struts-config.xml里面配置datasource是一样的道理:
[b]Web.config.xml:[/b]
[code]
<appSettings>
<add key="connstring" value="server=.;uid=sa;pwd=;database=pubs"></add>
</appSettings>
[/code]
接下来写一个连接数据库的公共的方法:
[b]DBM.cs:[/b]
[code]
using System;
using System.Data;
using System.Data.SqlClient; //引用命名空间,和java里面的import的作用是一样的

namespace Zsgc.DataBaseManage
{

public class DBM
{
private SqlConnection conn;

public SqlConnection getConn()
{
//创建与数据库的连接
if(conn==null)
{
//从Web.config里面读取
conn=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["connstring"]);
}
return conn;
}
//查询不带分页
public static DataTable getList(string sql)
{
DBM dbm=new DBM();
//适配器
SqlDataAdapter sda=new SqlDataAdapter(sql,dbm.getConn());
//实例化DataTable
DataTable dt=new DataTable();
//适配器将检索到的数据填充到dt里面
sda.Fill(dt);
//返回填充完数据的DataTable
return dt;
}
//查询带分页的,start--起始页,size--每页几条数据
public static DataTable getList(string sql,int start,int size)
{
DBM dbm=new DBM();
//适配器
SqlDataAdapter sda=new SqlDataAdapter(sql,dbm.getConn());
//实例化DataSet
DataSet ds=new DataSet();
//适配器将检索到的数据填充到ds里面,jobs--表名
sda.Fill(ds,start,size,"jobs");
//获取包含在DataSet中的表名为“jobs”的表
//返回填充完数据的DataTable
return ds.Tables["jobs"];
}
//公共的执行方法
public static Exception Execute(string sql)
{
DBM dbm=new DBM();
//Command对象是用于检索、更新、插入、删除数据库中的数据
SqlCommand cmd=new SqlCommand(sql,dbm.getConn());
//实例化一个Exception
Exception exception=null;
//因为ADO.NET遵循的是断开式连接的数据模型
//所以在使用Command对象的时候必须显式的打开数据库的连接
cmd.Connection.Open();
//数据库事务
SqlTransaction stran=cmd.Connection.BeginTransaction();
//开始事务
cmd.Transaction=stran;
try
{
//执行sql语句
cmd.ExecuteNonQuery();
//提交事务
stran.Commit();
}
catch(Exception ex)
{
//返回错误信息
exception=ex;
//出现错误,事务回滚
stran.Rollback();
}
finally
{
//关闭与数据库的连接
cmd.Connection.Close();
}
//返回异常信息
return exception;
}
//公共javascript提示信息
public static void message(string msg)
{
System.Web.HttpContext.Current.Response.Write("<script>alert('" +msg+ "');</script>");
}
}
}
[/code]
属性类:JobsModel.cs,将jobs表里面的字段都体现在这个里面,类似于FormBean,提供get(),set()方法。
接口类:ITFOpt.cs,至于对于为什么要使用接口,我想就不需要说明了。
[b]ITFOpt.cs:[/b]
[code]
using System;
using System.Data;

namespace Zsgc.Op
{
//实现增、删、改、查的公共接口
public interface ITFOpt
{
DataTable getList(); //没有任何条件的查询
DataTable getList(string wherestring); //带有条件的查询
DataTable getList(int start,int size);//有条件分页
Exception Add(object model); //添加数据
Exception Modify(object model);//修改数据
Exception Delete(object model);//删除数据
Exception Update(object pk);//修改数据
}
}
[/code]
继承接口实现增删改的操纵类:JobsOpt.cs
[b]JobsOpt.cs:[/b]
[code]
using System;
using System.Data;
using Zsgc.DataBaseManage;
using Zsgc.Models;
namespace Zsgc.Op
{
//C#中的继承是使用:来实现的,其中JobsOpt叫做派生类,ITFOpt叫做基类
//string.Format()方法是将指定的 String 中的每个格式项替换为相应对象的值的文本等效项。
public class JobsOpt:ITFOpt
{
#region ITFOpt 成员

//全查数据
public DataTable getList()
{
string sql=string.Format("select * from jobs");
return DBM.getList(sql);
}
//有条件的查询,wherestring是条件
public DataTable getList(string wherestring)
{
string sql=string.Format("select * from jobs where"+wherestring);
return DBM.getList(sql);
}
//支持有条件分页的查询
public DataTable getList(int start, int size)
{
string sql=string.Format("select * from jobs");
return DBM.getList(sql,start,size);
}
//添加数据
public Exception Add(object model)
{
//实例化一个JobsModel
JobsModel jobs=(JobsModel)model;
//其中{}是C#中的占位符,用来确定指定变量的值显示于字符串中的位置
string sql=string.Format("insert into jobs(job_desc,min_lvl,max_lvl) values('{0}',{1},{2})",jobs.Job_desc,jobs.Min_lvl,jobs.Max_lvl);
return DBM.Execute(sql);
}
//修改数据,不修改描述
public Exception Modify(object model)
{
//实例化一个JobsModel
JobsModel jobs=(JobsModel)model;
string sql=string.Format("update jobs set min_lvl={0},max_lvl={1} where job_id={2}",jobs.Min_lvl,jobs.Max_lvl,jobs.Job_id);
return DBM.Execute(sql);
}
//删除数据,pk为主键
public Exception Delete(object pk)
{
string sql=string.Format("delete from jobs where job_id={0}",pk.ToString());
return DBM.Execute(sql);
}
//修改数据,除主键外其余的都修改
public Exception Update(object model)
{
//实例化一个JobsModel
JobsModel jobs=(JobsModel)model;
//其中{}是C#中的占位符,用来确定指定变量的值显示于字符串中的位置
string sql=string.Format("update jobs set job_desc='{1}',min_lvl={1},max_lvl={2} where job_id={3}",jobs.Job_desc,jobs.Min_lvl,jobs.Max_lvl,jobs.Job_id);
return DBM.Execute(sql);
}

#endregion
}
}

[/code]
好了万事具备,只欠东风,我会在接下来继续说明如何进行数据绑定。
最终实现效果如图所示:
[img]http://fuhao9611.iteye.com/upload/picture/pic/3105/415b7ab7-b60f-43c2-a0e9-13a775b7b488.jpg[/img]
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值