OleDbCommand.Prepare 方法要求所有可变长度参数具有显式设置的非零“大小”。

好吃的松子 2010-09-25 01:19:13
使用Access数据库,请教为什么同样用DataSet更新数据的另一个方法不会抛异常

Login方法adapter.Update(ds);抛异常

public static AdminUser Login(String username, String password, String ip)
{
DbConnection conn = DataAccess.GetConn();
try
{
String sql = "select * from ADMIN where username=@username";
DbDataAdapter adapter = DataAccess.GetAdapter(conn, sql);
adapter.SelectCommand.Parameters.Add(DataAccess.GetParameter("@username", username));

DbCommandBuilder cmdBuilder = DataAccess.GetCmdBuilder();
cmdBuilder.DataAdapter = adapter;

conn.Open();
DataSet ds = new DataSet();
adapter.Fill(ds);

if (ds.Tables[0].Rows.Count == 1)
{
DataRow row = ds.Tables[0].Rows[0];
// if (password.Equals(row["passwd"]))
{
DateTime now = DateTime.Now;
row.BeginEdit();
// row["last_login_time"] = now;
row["last_login_ip"] = ip;
// row["update_time"] = now;
row.EndEdit();

adapter.Update(ds);

AdminUser user = new AdminUser();
return user;

}
}
throw new UserNameException("用户名或密码错误");
}
catch (DbException ex)
{
throw new Exception("数据库错误!", ex);
}
finally
{
if (conn != null)
{
conn.Close();
}
}
}


运行正常的方法

public static void UpdateAboutUs(AboutUs aboutUs)
{
DbConnection conn = DataAccess.GetConn();
try
{
String sql = "select top 1 * from ABOUT";
DbDataAdapter adapter
= DataAccess.GetAdapter(conn, sql);

DbCommandBuilder cmdBuilder = DataAccess.GetCmdBuilder();
cmdBuilder.DataAdapter = adapter;

conn.Open();
DataSet ds = new DataSet();
adapter.Fill(ds);

DataRow row = ds.Tables[0].Rows[0];

row.BeginEdit();
row["title"] = aboutUs.Title;
row["keywords"] = aboutUs.Keywords;
row["description"] = aboutUs.Description;
row["address"] = aboutUs.Address;
row["tel"] = aboutUs.Tel;
row["fax"] = aboutUs.Fax;
row["email"] = aboutUs.Email;
row["icp"] = aboutUs.Icp;
row.EndEdit();

adapter.Update(ds);
ds.Clear();
}
catch (DbException ex)
{
throw new Exception("数据库错误!", ex);
}
finally
{
if (conn!=null)
{
conn.Close();
}
}
}
...全文
337 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
好吃的松子 2010-09-26
  • 打赏
  • 举报
回复
怎么解决呢?

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧