黑马程序员技术交流社区
标题:
关于dataset更新的问题
[打印本页]
作者:
黑马刘俊
时间:
2013-1-18 09:58
标题:
关于dataset更新的问题
string userName = txtUserName.Text;
string password = passwordBox.Password;
string sql = "select * from T_user where name = @un ";
SqlParameter parameter = new SqlParameter ( "@un", userName );
SqlDataAdapter sda; //申明一个适配器
DataSet ds = new DataSet ( ); //申明一个dataset
string constr = ConfigurationManager.ConnectionStrings["Dbconnection"].ConnectionString;//获取连接字符串
using ( SqlConnection conn = new SqlConnection ( constr ) ) //建立连接对象
{
conn.Open ( ); //打开连接
using ( SqlCommand cmd = new SqlCommand ( ) ) //建立连接对象
{
cmd.Connection = conn;
cmd.CommandText = sql;
cmd.Parameters.Add ( parameter ); //增加参数
sda = new SqlDataAdapter (cmd);//使用命令对象作为参数创建适配器
SqlCommandBuilder builder = new SqlCommandBuilder ( sda ); //使用sqlcommandbuilder对象为适配器构建命令对象
sda.Fill ( ds ); //使用适配器填充dataset对象ds
}
}
DataTable table = ds.Tables[0]; //获取dataset中的表
if ( table.Rows.Count<=0 ) //判断表中是否有数据,如果没有,提示用户名不存在
{
MessageBox.Show ( "用户名不存在");
return;
}
else if ( table.Rows.Count>1 ) //如果表中数据大于1条,提示用户名重复了
{
MessageBox.Show ( "用户名重复" );
return;
}
else if ( (Boolean)table.Rows[0]["IsLock"] ==true ) //表中只会有1条数据,但是已经被锁定,则通知用户锁定,等待解锁后再次登录
{
MessageBox.Show ( "用户已锁定,请稍后再试" );
return;
}
else{ //用户名存在,且不重复,而且也未锁定 则判断密码是否正确
DataRow row = table.Rows[0];
string Dbpassword = ( string ) row["password"];
if ( Dbpassword == password ) //密码正确,提示登录成功,并将dataset中的ErrorTime 字段设置为0
{
MessageBox.Show ( " 登陆成功");
row["ErrorTime"] = 0;
table.AcceptChanges ( ); //接收表更新
sda.Update ( ds );// 通过适配器将更新传送回服务器
}
else //密码不正确 提示登录失败,并将ErrorTime 字段加1
{
MessageBox.Show ( " 登陆失败" );
row["ErrorTime"] = (int)row["ErrorTime"]+1;
if ( ( int ) row["ErrorTime"] >= 3 ) //如果加1后ErrorTime 字段的值大于 或等于3 则将IsLock字段设置为true,锁定用户,并将当前时间放入LockTime字段。
{
row["IsLock"] = true;
row["LockTime"] = DateTime.Today;
//table.AcceptChanges ( );
//sda.Update ( table );
}
table.AcceptChanges ( ); //表更新
sda.Update ( ds ); //提交更新到数据库
}
}
复制代码
代码如上,运行后没有报任何错误,但是数据库的表始终没有更新呢,求指导哪里写错了。
作者:
黑马刘俊
时间:
2013-1-18 22:30
额,没人指点下么
作者:
林嘉健
时间:
2013-1-19 20:34
你的没更新 是指 不会增加错误次数吗?
作者:
黑马刘俊
时间:
2013-1-19 20:36
是的 ,dataset中可以更新到,但是数据库不跟新
作者:
林嘉健
时间:
2013-1-19 20:48
table里面add了row了吗?
作者:
黑马刘俊
时间:
2013-1-20 12:02
我不明白
table里面add了row了吗
是什么意思,能说详细点么,谢谢
作者:
马锋
时间:
2013-1-27 09:43
对DataSet的修改都是在内存中的,没有提交到数据库,可以new一个SqlCommandBuilder,再把你的适配器放进去,再更新..
不过你不觉得用ExecuteNonQuery更新更简单吗..
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2