`
fuhao9611
  • 浏览: 84592 次
  • 性别: Icon_minigender_1
  • 来自: 陕西 西安
最近访客 更多访客>>
社区版块
存档分类
最新评论

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

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

接下来写一个连接数据库的公共的方法:
DBM.cs:
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>");	
		}
	}
}

属性类:JobsModel.cs,将jobs表里面的字段都体现在这个里面,类似于FormBean,提供get(),set()方法。
接口类:ITFOpt.cs,至于对于为什么要使用接口,我想就不需要说明了。
ITFOpt.cs:
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);//修改数据
	}
}

继承接口实现增删改的操纵类:JobsOpt.cs
JobsOpt.cs:
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
	}
}


好了万事具备,只欠东风,我会在接下来继续说明如何进行数据绑定。
最终实现效果如图所示:
  • C#与Asp.net介绍.zip (135.6 KB)
  • 描述: 开发环境:Microsoft Visual Studio .NET 2003 数据库:SQL Server 2000
  • 下载次数: 291
分享到:
评论
1 楼 jy786394 2008-03-24  
谢谢楼主。
我是个初学者,之前使用JAVA,刚刚换部门要求学c#.net
这边文章很有帮助

相关推荐

Global site tag (gtag.js) - Google Analytics