是的有关键字就不能更新,
都有值的,
应该不是数据不匹配的问题,
我用同样的数据,如果把DateTime字段的关键字改为DateTime2就可以添加数据了..

解决方案 »

  1.   

    ACCESS的Datetime数据类型和SQL server的用法有点区别
      

  2.   

    你意思你的字段名就叫DateTime?那你需要把关键字用[DateTime]来表示
      

  3.   

    先谢谢jiatong1981(末日之痕) 给我回复..DataAdapter.Update方法在内部实现时,如果能把字段加上[DateTime]就好了,这样就字段就可以是关键字了>微软DataAdapter.Update方法在实现时,也是生成SQL语句来实现更新数据库的,因为当有关键字时的异常信息是"Insert 语句错误";真不是这是不是微软的BUG.
      

  4.   

    好的,这个方法不错,我试试,把DateTime改为[DateTime]看能不能实现,,如果OK了给分..呵呵...
      

  5.   


    这个不行哦 :(((..字段名不能为[DateTime]的,不能用方括号..:(
      

  6.   

    我的意思还是要在sql语句里把关键字用[]标示出来按你的意思 你现在是用的CommandBuilder自动生成的sql吧可以不要这么用 自己指定sql 例如private static OleDbDataAdapter CreateCustomerAdapter(
        OleDbConnection connection)
    {
        OleDbDataAdapter dataAdapter = new OleDbDataAdapter();
        OleDbCommand command;
        OleDbParameter parameter;    // Create the SelectCommand.
        command = new OleDbCommand("SELECT * FROM dbo.Customers " +
            "WHERE Country = ? AND City = ?", connection);    command.Parameters.Add("Country", OleDbType.VarChar, 15);
        command.Parameters.Add("City", OleDbType.VarChar, 15);    dataAdapter.SelectCommand = command;    // Create the UpdateCommand.
        command = new OleDbCommand(
            "UPDATE dbo.Customers SET CustomerID = ?, CompanyName = ? " +
            "WHERE CustomerID = ?", connection);    command.Parameters.Add(
            "CustomerID", OleDbType.Char, 5, "CustomerID");
        command.Parameters.Add(
            "CompanyName", OleDbType.VarChar, 40, "CompanyName");    parameter = command.Parameters.Add(
            "oldCustomerID", OleDbType.Char, 5, "CustomerID");
        parameter.SourceVersion = DataRowVersion.Original;    dataAdapter.UpdateCommand = command;    return dataAdapter;
    }
      

  7.   

    你说的对,可以自己生成一条条SQL语句,再一条条地插入到数据库中.可我的数据库及表都是即时生成的,项目根据不同的定义文件,即时生成数据库文件及数据表.是的!我的更新代码如下:
    这个函数的功能是将有数据的数据表添加到数据库中,或许这样的效率会好点吧..如果是那样的话,还要取出表的每个字段名,但是有个问题,用微软的那个工具取出的字段名不是按照数据表的顺序,而是按字母排序的.这个比较烦,不能使数据和字段一一对应..bool LAT::DatabaseAccess::UpdateToDatabase(DataTable^ soureDataTable,String^ TableName)
    {
    String^ sqlStatement = "select * from [" + TableName + "]";
    try
    {
    OleDbDataAdapter^ dataAdapter = gcnew OleDbDataAdapter(sqlStatement,_OleConn); OleDbCommandBuilder^ oleDbCmdBuilder = gcnew OleDbCommandBuilder(dataAdapter); DataSet^ dataSet = gcnew DataSet(); DataTable^ dt= soureDataTable->Copy(); dataSet->Tables->Add(dt); dataSet->Tables[0]->TableName = TableName; dataAdapter->Update(dataSet,TableName); dataSet->AcceptChanges();
    }
    catch(Exception^ ex)
    {
    LAT::CommonFunction::WriteLogEntry(TraceEventType::Error,"Cannot add one row data to temporary DataTable in memory ("+ex->Message+")"); return false;
    } return true;}
      

  8.   

    如果微软在进行数据更新时,自动生成的SQL语句能把字段加上[]方括号就好了.:)