string sql1 = "select * from jbsj";
            OleDbDataAdapter dataAdapter = new OleDbDataAdapter(sql1, clientConnection);
            DataTable dTable = new DataTable();
            dataAdapter.Fill(dTable);
            dataAdapter.Dispose();
            clientConnection.Close();
            myFileName = this.textBox3.Text;            OleDbConnection serverConnection = new OleDbConnection(strConnection);  //建立ACCESS数据库连接
            serverConnection.Open();
            OleDbCommand cmd = serverConnection.CreateCommand();
            OleDbTransaction tran = serverConnection.BeginTransaction();
            cmd.Transaction = tran;
          try
            {
                for (int i = 0; i < dTable.Rows.Count; i++)
                {
                    try
                    {
                        Row = dTable.Rows[i];
                    
                      string sql11 = "insert into jbsj(jh,zjdh) values('" + Row[0] + "'" + ",'" + Row[1]+"')";
                        
                        cmd.CommandText = sql11;
                        cmd.ExecuteNonQuery();
                        MessageBox.Show(i.ToString());                    }
                   catch (Exception ex)
                    {
                        string sql12 = "update jbsj set jh='" + Row[0] + "',zjdh='" + Row[1] + "'";
                        
                        cmd.CommandText = sql12;
                        cmd.ExecuteNonQuery();
                        
                    }
                }
大意是从一个ACCESS数据库里把表JBSJ里面的数据更新到另外一个数据库里面。表结构相同。jh是主键。这样能行不?

解决方案 »

  1.   

    string sql12 = "update jbsj set jh='" + Row[0] + "',zjdh='" + Row[1] + "'"; 更新所有??
      

  2.   

    1. tran.Commit(); 呢??????? 事物不提交怎么行2 还不行就单步调下 sql12是个什么?
     手动Access执行下看成功否
    3. serverConnection别忘了关闭
      

  3.   

    Row[0].ToString()
    Row[1].ToString()
      

  4.   

    要么提交事务。
    要么去掉
                OleDbTransaction tran = serverConnection.BeginTransaction();
                cmd.Transaction = tran;