System.Data.OleDb.OleDbConnection con = new OleDbConnection(OleDB.ConnectionString);
con.Open();
System.Data.OleDb.OleDbCommand com = new OleDbCommand("delete ChatHtmlTemplet where id = @ID",con);
com.CommandType = CommandType.Text;
com.Parameters.Add("@ID",_ID);
com.ExecuteNonQuery();
con.Close();--------------------
错误提示:必须声明变量 '@ID'。 我晕了,是怎么回事啊。大家说说看。

解决方案 »

  1.   

    System.Data.OleDb.OleDbConnection con = new OleDbConnection(OleDB.ConnectionString);
    System.Data.OleDb.OleDbCommand com = new OleDbCommand("delete ChatHtmlTemplet where id = @ID",con);
    OleDbParameter parm1=new OleDbParameter("@ID",SqlDbType.Int);
    parm1.Value=Convert.ToInt32(_ID);
    com.Parameters.Add(parm1);
    con.Open();
    com.ExecuteNonQuery();
    con.Close();
      

  2.   

    System.Data.OleDb.OleDbConnection con = new OleDbConnection(OleDB.ConnectionString);
    con.Open();
    System.Data.OleDb.OleDbCommand com = new OleDbCommand("delete ChatHtmlTemplet where id = @ID",con);
    com.Parameters.Add(new Parameter("@ID",SqlDbType.Int,4);
    com.Parameters["@ID"].value=Convert.toInt32(_ID);
    com.Open();
    com.ExecuteNonQuery();
    con.Close();
      

  3.   

    楼上错误依旧啊。我试过用ODBC也出这个错误.
      

  4.   

    查询语句也有错
    delete from ChatHtmlTemplet where id = @ID
      

  5.   

    这个语句在mssql中是合法的,但是问题还是依旧,怎么回事啊。难道是BUG?
      

  6.   

    OleDb里面的参数好像是用?的吧,而且你的查询语句是不是有问题啊?
      

  7.   

    delete ChatHtmlTemplet where id = @ID=====
    From 呢???而且操作Access的时候一般应该这样写:
    Delect * From TableName Where ID=@ID
    Or
    Delect * From TableName Where ID=?
      

  8.   

    System.Data.OleDb.OleDbConnection con = new OleDbConnection(ConnectionString);
    System.Data.OleDb.OleDbCommand com = new OleDbCommand("delete from ChatHtmlTemplet  where id = ?",con);
    OleDbParameter parm1=new OleDbParameter();
    parm1 = com.Parameters.Add("?", OleDbType.Integer);
    parm1.Value=Convert.ToInt32(_ID);
    con.Open();
    com.ExecuteNonQuery();
    con.Close();改成这样,把@ID改为?
      

  9.   

    renyu732(任宇) :  delete * from tablename where id = 33
    这个方法在MSSQL中是非法的。singlepine(小山) :还有这么奇怪的用法?如果是多参数怎么用?
      

  10.   

    那得看你的MSSQL中的ID字段数据类型是什么类型了。
    如果不是Int型的,肯定不可以的.
    比如,如果是varchar(50)
    你必须这样
    delete * from tablename where id = "33"而由于Access传参数是按地址传的.
    所以,可以用?代替@参数名.
    但是必须保证?,?和数据库字段保持一致的。
      

  11.   

    谢谢楼上各位,我自己找到了。把方法公布出来,供和我一样遇到这样问题的朋友:System.Data.OleDb.OleDbConnection con = new OleDbConnection(OleDB.ConnectionString);


    System.Data.OleDb.OleDbCommand com = new OleDbCommand("delete from ChatHtmlTemplet where id = ? or name = ?",con);
    com.Parameters.Add("?",_ID);
    com.Parameters.Add("?","333");
    con.Open();
    com.ExecuteNonQuery();
    con.Close();
      

  12.   

    比如:
    OleDbConnection conn=new OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0;Data Source="+Server.MapPath("Data.Mdb"));
    conn.Open();
    OleDbCommand cmd=new OleDbCommand("Insert Into Test(1,2) Values(?,?)",conn);
    cmd.Parameters.Add("?",this.TextBox1.Text);
    cmd.Parameters.Add("?",this.TextBox2.Text);
    cmd.ExecuteNonQuery();
    conn.Close();