StringBuilder strSql = new StringBuilder();
strSql.Append("update news set ");
strSql.Append("Title=@Title,");
strSql.Append("Come=@Come,");
strSql.Append("Content=@Content,");
strSql.Append("Times=@Times,");
strSql.Append("img=@img,");
strSql.Append("TOPID=@TOPID,");
strSql.Append("newsimg_type_id=@newsimg_type_id,");
strSql.Append("news_type_id=@news_type_id");
strSql.Append(" where ID=@ID ");
OleDbParameter[] parameters = {
new OleDbParameter("@ID", OleDbType.Integer,4),
new OleDbParameter("@Title", OleDbType.VarChar,100),
new OleDbParameter("@Come", OleDbType.VarChar,200),
new OleDbParameter("@Content", OleDbType.VarChar,0),
new OleDbParameter("@Times", OleDbType.Date),
new OleDbParameter("@img", OleDbType.VarChar,255),
new OleDbParameter("@TOPID", OleDbType.Integer,4),
new OleDbParameter("@newsimg_type_id", OleDbType.Integer,4),
new OleDbParameter("@news_type_id", OleDbType.Integer,4)};
parameters[0].Value = model.ID;
parameters[1].Value = model.Title;
parameters[2].Value = model.Come;
parameters[3].Value = model.Content;
parameters[4].Value = model.Times;
parameters[5].Value = model.img;
parameters[6].Value = model.TOPID;
parameters[7].Value = model.newsimg_type_id;
parameters[8].Value = model.news_type_id; DbHelperOleDb.ExecuteSql(strSql.ToString(), parameters);
值都取到,如果我直接这样写就可以string sql = "update news set title='123' where ID=20";
就算用字符串拼接也不可以,这是什么原因?
strSql.Append("update news set ");
strSql.Append("Title=@Title,");
strSql.Append("Come=@Come,");
strSql.Append("Content=@Content,");
strSql.Append("Times=@Times,");
strSql.Append("img=@img,");
strSql.Append("TOPID=@TOPID,");
strSql.Append("newsimg_type_id=@newsimg_type_id,");
strSql.Append("news_type_id=@news_type_id");
strSql.Append(" where ID=@ID ");
OleDbParameter[] parameters = {
new OleDbParameter("@ID", OleDbType.Integer,4),
new OleDbParameter("@Title", OleDbType.VarChar,100),
new OleDbParameter("@Come", OleDbType.VarChar,200),
new OleDbParameter("@Content", OleDbType.VarChar,0),
new OleDbParameter("@Times", OleDbType.Date),
new OleDbParameter("@img", OleDbType.VarChar,255),
new OleDbParameter("@TOPID", OleDbType.Integer,4),
new OleDbParameter("@newsimg_type_id", OleDbType.Integer,4),
new OleDbParameter("@news_type_id", OleDbType.Integer,4)};
parameters[0].Value = model.ID;
parameters[1].Value = model.Title;
parameters[2].Value = model.Come;
parameters[3].Value = model.Content;
parameters[4].Value = model.Times;
parameters[5].Value = model.img;
parameters[6].Value = model.TOPID;
parameters[7].Value = model.newsimg_type_id;
parameters[8].Value = model.news_type_id; DbHelperOleDb.ExecuteSql(strSql.ToString(), parameters);
值都取到,如果我直接这样写就可以string sql = "update news set title='123' where ID=20";
就算用字符串拼接也不可以,这是什么原因?
/// </summary>
public void Update(int MID) {
StringBuilder strSql = new StringBuilder();
strSql.Append("update Message set ");
strSql.Append("Shenhe=@Shenhe");
strSql.Append(" where MID=" + MID + " ");
OleDbParameter[] parameters = {
new OleDbParameter("@Shenhe", OleDbType.VarChar,50)};
parameters[0].Value = 1;
DbHelperOleDb.ExecuteSql(strSql.ToString(), parameters);
}
语句没有问题 可能是你的数据库访问类有问题 仔细检查一下
strSql.Append("Title=@Title,");
strSql.Append("Come=@Come,");
strSql.Append("Content=@Content,");
strSql.Append("Times=@Times,");
strSql.Append("img=@img,");
strSql.Append("TOPID=@TOPID,");
strSql.Append("newsimg_type_id=@newsimg_type_id,");
strSql.Append("news_type_id=@news_type_id");
strSql.Append(" where ID=@ID ");
把这些带@符号开头的全换成?号
strSql.Append("Content=?,");
strSql.Append("[Title]=@Title,");
strSql.Append("[Come]=@Come,");
strSql.Append("[Content]=@Content,");
...
strSql.Append(" where [ID]=@ID ");