首先自行创建一个School数据库,并添加一个Student的数据表,创建一个Default_DataSet.aspx的网页。
我们对数据库的操作封装成一个类,便于以后操作直接调用。
创建一个OperaData类:
public class OperaData
{
SqlConnection conn = null;//定义连接的全局变量
SqlCommand comm = null;//定义操作命令的全局变量
SqlDataAdapter Adapter = null;//定义适配器
//构造函数中实例化对象
public OperaData()
{
conn = new SqlConnection("Server=SERVER-1;DataBase=School;User ID=sa;Password=123456");
comm = new SqlCommand();
Adapter = new SqlDataAdapter();
}
public DataSet ExecSelect()//数据库查询方法,DataSet为返回类型
{
conn.Open();//打开数据库
comm.CommandType = CommandType.Text;//定义发送到数据库的SQL语句
comm.CommandText = "select * from Student Order by ID";//定义查询语句
comm.Connection = conn;//指定SQL命令所指定的数据库连接类
Adapter.SelectCommand = comm;//定义查询命令
DataSet ds = new DataSet();
Adapter.Fill(ds);//填充数据集
return ds;
}
public int Update(DataSet ds) //更新数据库
//SqlCommandBuilder对象用于生成更新语句,SqlDataAdapter的Update方法用于执行更新数据库
{
SqlCommandBuilder scb = new SqlCommandBuilder(Adapter);
return Adapter.Update(ds);
}
public void Complete()//更新,查询,删除数据库后执行统一释放资源
{
conn.Dispose();
comm.Dispose();
Adapter.Dispose();
}
public void InsertData(string Name, string Sex, string Age, string Class)//新增一行
{
DataSet ds = ExecSelect();//填充数据集
DataRow dr = ds.Tables[0].NewRow();//新建一行
dr["Name"] = Name;
dr["Sex"] = Sex;
dr["Age"] = Age;
dr["Class"] = Class;
ds.Tables[0].Rows.Add(dr);//数据集中添加行
Update(ds);//提交更改
Complete();//释放资源
}
public void update_DataSet(string Class)//查询并修改指定位置数据
{
DataSet ds = ExecSelect();//填充数据集
DataTable dt = ds.Tables[0];//选定数据表
DataRow[] dr = dt.Select("Class= '" + Class + "'");//查询数据
for(int i = 0; i < dr.Length; i++)
{
dr[i]["Age"] = "250";
}
Update(ds);//提交更改
Complete();//释放资源
}
public DataSet check_Data(int id)//检索指定具有指定ID的项的筛选,并单独呈现在网页上
{
DataSet ds_tmp = new DataSet();//建立一个临时的数据集用来存放筛选的项
DataSet ds = ExecSelect();//原始填充数据集
/*Clone和Copy:
* 使用Copy方法会创建与原DataSet具有相同结构和相同行的新DataSet.
* 使用Clone方法会创建具有相同结构的新DataSet,但不包含任何行。*/
ds_tmp = ds.Clone();
DataTable dt = ds.Tables[0];//选定数据表
DataRow[] drs = dt.Select("ID='" + id + "'");//查询数据
foreach(DataRow dr in drs)
{
/*NewRow() 创建与该表具有相同架构的新DataRow*/
ds_tmp.Tables[0].NewRow();
/*ItemArray:获取或设置行中所有列的值。*/
ds_tmp.Tables[0].Rows.Add(dr.ItemArray);
}
/*AcceptChanges和RejectChanges:
* 接受或放弃DataSet中所有挂起更改。调用AcceptChanges时,
* RowState属性值为Added或Modified的所有行的RowState属性都将被设置为UnChanged.
* 任何标记为Deleted的DataRow对象将从DataSet中删除。
* 调用RejectChanges时,任何标记为Added的DataRow对象将会被从DataSet中删除,
* 其他修改过的DatRow对象将返回前一状态。*/
ds.AcceptChanges();//应用更改
Complete();//释放资源
return ds_tmp;//返回筛选表
}
public void delete_Data(int id)//删除数据
{
DataSet ds = ExecSelect();//填充数据集
DataTable dt = ds.Tables[0];//选定数据表
DataColumn[] keys = new DataColumn[1];//创建列的对象
keys[0] = dt.Columns["ID"];//这里表的第一列为UserName
dt.PrimaryKey = keys;//绑定主键
//DataRow[] drs = dt.Select("ID='" + id + "'");//查询数据
DataRow drs1 = dt.Rows.Find(id);//find方法用于直接通过ID标识来删除项目
drs1.Delete();//删除表中指定行
Update(ds);//提交更改
Complete();//释放资源
}
}