语法错误 (操作符丢失) 在查询表达式 '@ id' 中

我写了一个添加新闻的类叫Addnews,代码如下
public int Addnews(int id,string title,string auther,string context,System.DateTime time)
{
int f = 0;
string addsql = "insert into newslist ([id],[title],[auther],[context],[time]) values (@ id,@ title,@ auther,@ context,@ time)";
try
{
OleDbParameter[] para = new OleDbParameter[]
{
new OleDbParameter ("@ id",id),
new OleDbParameter ("@ title",title),
new OleDbParameter ("@ auther",auther),
new OleDbParameter ("@ context",context),
new OleDbParameter ("@ time",time),
};

a.ExecuteNonQuery(addsql, para);
}
catch (Exception)
{
// Console.WriteLine(e.Message);
throw;
}
if (f>0)
{
f = 1;
}
return f;

}
}

我在外面调用的写法是
sjkxg cx = new sjkxg();
int i = cx.Addnews(Convert.ToInt32(TextBox1.Text), TextBox2.Text, TextBox3.Text, TextBox4.Text, System.DateTime.Now);
Response.Write(i);
出错是:
语法错误 (操作符丢失) 在查询表达式 '@ id' 中。

行 43: OleDbCommand cmd = new OleDbCommand(safesql, conn);
行 44: cmd.Parameters.AddRange(values);
行 45: return cmd.ExecuteNonQuery();
行 46: }
行 47:

堆栈跟踪:

[OleDbException (0x80040e14): 语法错误 (操作符丢失) 在查询表达式 '@ id' 中。]
System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr) +1070856
System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) +247
System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) +194
System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) +58
System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) +167
System.Data.OleDb.OleDbCommand.ExecuteNonQuery() +113
sjk.ExecuteNonQuery(String safesql, OleDbParameter[] values) in e:\vs作业\东海课堂新闻发布系统\App_Code\sjk.cs:45
sjkxg.Addnews(Int32 id, String title, String auther, String context, DateTime time) in e:\vs作业\东海课堂新闻发布系统\App_Code\sjkxg.cs:66
xsy.Button1_Click(Object sender, EventArgs e) in e:\vs作业\东海课堂新闻发布系统\xsy.aspx.cs:29
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +118
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +112
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5563

ID 自动编号类型的吧??这个是不需要手动添加内容的。追问

是啊,ID 是自动编号的,如果我把那个id项删除掉,那么又会提示错误说我的方法不存在4个参数的重载!!!那我改怎么修改呢

追答

public int Addnews(string title,string auther,string context,System.DateTime time)
{
int f = 0;
string addsql = "insert into newslist ([id],[title],[auther],[context],[time]) values (@ title,@ auther,@ context,@ time)";
try
{
OleDbParameter[] para = new OleDbParameter[]
{
new OleDbParameter ("@ title",title),
new OleDbParameter ("@ auther",auther),
new OleDbParameter ("@ context",context),
new OleDbParameter ("@ time",time),
};

a.ExecuteNonQuery(addsql, para);
}
catch (Exception)
{
// Console.WriteLine(e.Message);
throw;
}
if (f>0)
{
f = 1;
}
return f;

}
}

外面调用的写法是
sjkxg cx = new sjkxg();
int i = cx.Addnews(TextBox2.Text, TextBox3.Text, TextBox4.Text, System.DateTime.Now);
Response.Write(i);

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网