【发布时间】:2008-12-16 13:07:25
【问题描述】:
我有一个非常简单的更新语句,它将更新邮件服务器设置和网络凭据信息...当我在 Access 中运行它时查询工作正常,但 C# 一直给我一个错误,指出我的 SQL 语法错误...我有一个数据访问层(dal类)和更新实例方法粘贴在下面......但问题一定是其他因为我已经以这种方式更新了很多东西,但这次它不会做......任何线索将不胜感激.提前谢谢。
更新 DAL 类中的实例方法 ..(这应该是数据访问层 :) 我只是一名管理专业毕业生 :P
public int UpdateRow(string Query, bool isSP, params OleDbParameter[] args)
{
int affectedRows = -1;
using (con = new OleDbConnection(connStr))
{
using (cmd = con.CreateCommand())
{
cmd.CommandText = Query;
if (isSP)
{
cmd.CommandType = CommandType.StoredProcedure;
}
if (args != null)
{
foreach (OleDbParameter prm in args)
{
cmd.Parameters.Add(prm);
}
}
try
{
con.Open();
affectedRows = cmd.ExecuteNonQuery();
}
catch(OleDbException ex)
{
throw ex;
}
catch (Exception ex)
{
throw ex;
}
}
}
return affectedRows;
}
以及将执行更新的 ASP.NEt 代码隐藏 =
protected void Update_Click(object sender, EventArgs e) {
DAL dal = new DAL();
string upt = string.Format("UPDATE [MailConfig] SET Server='{0}', Username='{1}', Password='{2}', AddressFrom='{3}', DisplayName='{4}'",server.Text,username.Text,password.Text,replyto.Text,displayname.Text);
dal.UpdateRow(upt,false,null);
LoadData();
}
和平!
【问题讨论】:
-
永远不要这样做! : catch(OleDbException ex) { 抛出 ex;总是在“InnerException”中用“ex”抛出新异常或使用简单的“throw;”没有“前”。以您的方式,您丢失了有关调用堆栈等的啤酒信息......
-
能否粘贴正在更新的行的数据类型,以及每个对象的数据类型?
-
@TcKs 这是非常好的建议!如果你扔掉前任,你就有可能在链条上进一步失去原来的前任。
标签: c# sql oledb sql-update