access数据库的语法问题
我现在写了一个access的查询语句,//修改资料
public static int UpdateById(News ne)
{
string sql = "update News set Title='" + ne.Title + "',entitle='" + ne.Entitle + "',encontent='" + ne.Encontent + "',jptitle='" + ne.Jptitle + "',jpcontent='" + ne.Jpcontent + "',Content='" + ne.Content + "',BigClassName='" + ne.BigClassName + "',SmallClassName='" + ne.SmallClassName + "',User='" + ne.User + "',Infotime='"+ne.Infotime+"' where id=" + ne.ID + " ";
return DBHelper.ExecuteCommand(sql);
}
我进行调试,把生成的sql语句写进数据库中运行没问题,可是在代码中运行到 return DBHelper.ExecuteCommand(sql);按F11进度DBheper中,运行 public static int ExecuteCommand(string safeSql)
{
OleDbConnection conn = new OleDbConnection(connectionString);
OleDbCommand cmd = new OleDbCommand();
try
{
PrepareCommand(cmd, conn, CommandType.Text, safeSql, null);
int result = cmd.ExecuteNonQuery();
return result;
}
catch (Exception e)
{
return 0;
}
finally
{
cmd.Dispose();
conn.Close();
conn.Dispose();
}
}
当运行到int result = cmd.ExecuteNonQuery();后,直接跳到 catch (Exception e)中就提示说update语法错误,这是怎么回事啊?? --------------------编程问答-------------------- 看着乱,肯定是语句有问题,你把sql显示出来,仔细看看,或者放到access查询中看看 --------------------编程问答-------------------- 我放到access上执行没问题啊
要是认为高手可以加我QQ82626948,谢谢,远程调试一下啊 --------------------编程问答-------------------- string sql = "update News set Title='" + ne.Title + "',entitle='" + ne.Entitle + "',encontent='" + ne.Encontent + "',jptitle='" + ne.Jptitle + "',jpcontent='" + ne.Jpcontent + "',Content='" + ne.Content + "',BigClassName='" + ne.BigClassName + "',SmallClassName='" + ne.SmallClassName + "',User='" + ne.User + "',Infotime='"+ne.Infotime+"' where id=" + ne.ID + " ";
这最后的 where id=" + ne.ID + " "; 加个空格做什么了? --------------------编程问答-------------------- 那个空格不碍事,我删掉也一样啊
--------------------编程问答-------------------- DBHelper.ExecuteCommand(sql);那这个方法 有没有问题了? --------------------编程问答-------------------- Infotime='"+ne.Infotime+"' 这个是时间吗?如果是要写成Infotime=#"+ne.Infotime+"# --------------------编程问答-------------------- 这个时间格式的,去去掉这个字段也会报那个错误啊
--------------------编程问答-------------------- 应该是保留字的问题,你把User,改成[User]
--------------------编程问答-------------------- 我试试啊,不清除啊 --------------------编程问答-------------------- Infotime='"+ne.Infotime+"'
这个是日期?
日期用"#"
Infotime=#"+ne.Infotime+"# --------------------编程问答-------------------- 用参数的形式来执行吧。
StringBuilder strSql = new StringBuilder();
strSql.Append("update Types set ");
strSql.Append("IsOutput=@IsOutput,");
strSql.Append("SortValue=@SortValue,");
strSql.Append("TypeName=@TypeName");
strSql.Append(" where TypeID=@TypeID ");
OleDbParameter[] parameters = {
new OleDbParameter("@IsOutput", OleDbType.Boolean,2),
new OleDbParameter("@SortValue", OleDbType.Integer,4),
new OleDbParameter("@TypeName", OleDbType.VarChar,250),
new OleDbParameter("@TypeID", OleDbType.Integer,4)};
parameters[0].Value = model.IsOutput;
parameters[1].Value = model.SortValue;
parameters[2].Value = model.TypeName;
parameters[3].Value = model.TypeID;
return DbHelperOleDb.ExecuteSql(strSql.ToString(), parameters) > 0; --------------------编程问答-------------------- 加我好友把,我的QQ82626948,谁帮我远程一下啊,这个问题纠结了好久了啊,帮我看一下我到底哪里错了啊
补充:.NET技术 , ASP.NET