Ole不能用@xxx做变量名的,sql语句中只能用?代替,然后顺序不能错。
如果是SQL Server的话,就用SqlClient吧!

解决方案 »

  1.   

    我按照 tonybaobao(Tony宝宝)所说的做了修改,还是不行
      

  2.   

    //试试这个, 根据tonybaobao(Tony宝宝)using System;
    using System.Data;
    using System.Data.OleDb;
    namespace ConsoleApplication8
    {
    /// <summary>
    /// Class1 的摘要说明。
    /// </summary>
    class Class1
    {
    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
    string constr="provider=sqloledb;Uid=sa;pwd=;initial catalog=NorthWind;data source=(local)";
    OleDbConnection con=new OleDbConnection(constr);
    con.Open();
    OleDbTransaction tran=null;
    tran=con.BeginTransaction();
    OleDbCommand command=con.CreateCommand();
    command.Connection=con;
    command.Transaction=tran;
    try
    {

    command.CommandText="insert into Books(BookID,BookName,Description,ISBN,Discontinued) values(@BookID,@BookName,@Description,@ISBN,@Discontinued)";
    command.CommandText="insert into Books(BookName,Description,ISBN,Discontinued) values(?,?,?,?)";
    command.CommandType=CommandType.Text;
    System.Data.OleDb.OleDbParameter [] parameters=new OleDbParameter[4];
    parameters[0]=new System.Data.OleDb.OleDbParameter("@BookName",System.Data.OleDb.OleDbType.VarChar);
    parameters[0].Value="Office 2000";
    command.Parameters.Add(parameters[0]);

    parameters[1]=new System.Data.OleDb.OleDbParameter("@Description",System.Data.OleDb.OleDbType.VarChar);
    parameters[1].Value="Book of Offiec 2000";
    command.Parameters.Add(parameters[1]);

    parameters[2]=new System.Data.OleDb.OleDbParameter("@ISBN",System.Data.OleDb.OleDbType.VarChar);
    parameters[2].Value="980-45-458974";
    command.Parameters.Add(parameters[2]);

    parameters[3]=new System.Data.OleDb.OleDbParameter("@Discontinued",System.Data.OleDb.OleDbType.Char);
    parameters[3].Value=0;;
    command.Parameters.Add(parameters[3]);

    command.ExecuteNonQuery();
    tran.Commit();

    }
    catch(Exception e)
    {
    tran.Rollback();
    }
    finally
    {
    con.Close();
    }
    }
    }
    }
      

  3.   

    parameters[3]=new System.Data.OleDb.OleDbParameter("@Discontinued",System.Data.OleDb.OleDbType.Char);
    parameters[3].Value=0;;
    command.Parameters.Add(parameters[3]);
    数据库中Discontinued字段类型是什么??
    我怀疑是bit,如果是那样的化参数用OleDbType.Boolean试试看