无连接模式:可以在没有打开连接时在内存中操作数据,DataAdapter通过管理连接为无连接模式提供服务,当要从数据库中查询数据时,DataAdapter打开一个连接,填充指定的DataSet,等数据读取完马上自动关闭连接,然后可以对数据做修改,再次使用DataAdapter打开连接,持久化修改(无论是更新,删除或是更新),最后自动关闭连接,使用无连接模式的情况是有一些独立数据,它们不会发生改变或者很少改变,因为在将填充DataSet和更新数据这段时间内数据库中的实际数据也许会发生改变,如果需要将数据立即持久化到数据库请使用连接模式
读取数据到DataSet:无连接意味着一个连接建立了一个与数据库的会话,请求的数据读入到DataSet中,然后通过断开数据库的连接关闭会话,这时会话因为与数据库的断开而关闭,DataSet成为一个无连接的数据库
复制代码 代码如下:
/// <summary>
/// 查询学生信息
/// </summary>
/// <returns>返回填充了学生表的DataSet</returns>
public DataSet GetUserInfor()
{
string str = "Data Source=.;Initial Catalog=Student;Integrated Security=True";
var conn = new SqlConnection(str);
DataSet ds = new DataSet();
var sda = new SqlDataAdapter("SELECT * FROM Student",conn);
sda.Fill(ds, "student");//调用fill方法时,SqlDataAdapter会自动打开连接,读取数据然后关闭连接
foreach (DataRow dr in ds.Tables["student"].Rows)
{
Console.WriteLine(dr["name"]);
}
return ds;
}
将DataSet的修改保存到数据库
插入数据
复制代码 代码如下:
/// <summary>
/// 插入学生信息,并返回插入后的DataSet
/// </summary>
/// <param name="stu">学生实体类</param>
public DataSet InsertStudnt(Student stu)
{
DataSet ds = GetUserInfor();
string str = "Data Source=.;Initial Catalog=Student;Integrated Security=True";
string sql = "INSERT INTO student VALUES (@name,@age)";
var conn = new SqlConnection(str);
var cmd = new SqlCommand(sql,conn);
var sda = new SqlDataAdapter();
SqlParameter sqlParam1 = new SqlParameter()
{
ParameterName = "@name",
SourceColumn = "name"
};
SqlParameter sqlParam2 = new SqlParameter()
{
ParameterName = "@age",
SourceColumn = "age"
};
SqlParameter[] sqlParamArray = new SqlParameter[] {sqlParam1,sqlParam2 };
cmd.Parameters.AddRange(sqlParamArray);
sda.InsertCommand = cmd;
DataRow dr = ds.Tables["student"].NewRow();
dr["name"] = stu.name;
dr["age"] = stu.age;
ds.Tables["student"].Rows.Add(dr);
sda.Update(ds,"student");
return ds;
}
更新数据
复制代码 代码如下:
/// <summary>
/// 根据ID更新姓名和年龄
/// </summary>
/// <param name="name">姓名</param>
/// <param name="age">年龄</param>
/// <param name="id">学生ID</param>
/// <returns>返回更新后的DataSet</returns>
public DataSet UpdateStudent(Student stu,int id)
{
DataSet ds = GetUserInfor();
string str = "Data Source=.;Initial Catalog=Student;Integrated Security=True";
string sql = "UPDATE student SET name=@name,age=@age WHERE id=@id";
var conn = new SqlConnection(str);
var cmd = new SqlCommand(sql, conn);
var sda = new SqlDataAdapter();
SqlParameter param1 = new SqlParameter()
{
ParameterName="@name",SourceColumn="name"
};
SqlParameter param2 = new SqlParameter()
{
ParameterName = "@age",
SourceColumn = "age",
SqlDbType=SqlDbType.Int
};
SqlParameter param3 = new SqlParameter()
{
ParameterName = "@id",
SourceColumn = "id"
};
SqlParameter[] param = new SqlParameter[] {param1,param2,param3 };
cmd.Parameters.AddRange(param);
sda.UpdateCommand = cmd;
DataTable dt = ds.Tables["student"];
foreach (DataRow dr in dt.Rows)
{
int oldID=Convert.ToInt32(dr["id"]);
if (oldID == id)
{
dr["name"] = stu.name;
dr["age"] = stu.age;
}
}
sda.Update(ds,"student");
return ds;
}
删除数据
复制代码 代码如下:
/// <summary>
/// 根据ID删除一个学生
/// </summary>
/// <param name="id">返回更新后的DataSet</param>
public DataSet DeleteStudent(int id)
{
DataSet ds = GetUserInfor();
string str = "Data Source=.;Initial Catalog=Student;Integrated Security=True";
string sql = "DELETE FROM student WHERE id=@id";
var conn = new SqlConnection(str);
var cmd = new SqlCommand(sql, conn);
var sda = new SqlDataAdapter();
SqlParameter param = new SqlParameter()
{
ParameterName="@id",SourceColumn="id",SqlDbType=SqlDbType.Int
};
cmd.Parameters.Add(param);
sda.DeleteCommand = cmd;
DataTable dt=ds.Tables["student"];
foreach (DataRow dr in dt.Rows)
{
int oldId = Convert.ToInt32(dr["id"]);
if (oldId == id)
dr.Delete();
}
sda.Update(ds,"student");
return ds;
}
ADO.NET,无连接模式
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 林俊吉.2012-将你惜命命【美华】【WAV+CUE】
- 晓雅《分享》DTS-WAV
- 黑鸭子2008-飞歌[首版][WAV+CUE]
- 黄乙玲1989-水泼落地难收回[日本天龙版][WAV+CUE]
- 周深《反深代词》[先听版][FLAC/分轨][310.97MB]
- 姜育恒1984《什么时候·串起又散落》台湾复刻版[WAV+CUE][1G]
- 那英《如今》引进版[WAV+CUE][1G]
- 蔡幸娟.1991-真的让我爱你吗【飞碟】【WAV+CUE】
- 群星.2024-好团圆电视剧原声带【TME】【FLAC分轨】
- 陈思安.1990-国语钢琴酒吧5CD【欣代唱片】【WAV+CUE】
- 莫文蔚《莫后年代20周年世纪典藏》3CD[WAV+CUE][2G]
- 张惠妹《我要快乐》华纳[WAV+CUE][1G]
- 罗大佑1982《之乎者也》无法盗版的青春套装版 [WAV+CUE][1G]
- 曾庆瑜1989-款款柔情[日本东芝版][WAV+CUE]
- Scelsi-IntegraledesquatuorsacordesetTrioacordes-QuatuorMolinari(2024)[24bit-WAV]