char buf1[256];
char buf2[256];//打开源数据库
db.open( DBSourcePath );//打开目标数据库
db2.open( DBTargetPath );
//开始合并
memset( buf1, 0, sizeof( buf1 ) );
memset( buf2, 0, sizeof( buf2 ) );
strcpy( buf1, "select * from Table1 where statue = '2';" );
Query q = db.execQuery( buf1 );
while( !q.eof() )
{
for(int i=0;i<8;i++) //Table1每条记录有8个项
{
Field[i] = q.fieldValue(i); //获取每一项的数据


q.nextRow();
sprintf( buf2, "insert into Table2 values  ('%s','%s','%s','%s','%s','%s','%s', '%s');",Field[0], Field[1], Field[2], Field[3], Field[4], Field[5], Field[6], Field[7] ); //拼装数据
db2.execDML( buf2 ); //插入数据到表2
}    //合并结束
db.close();
db2.close();相当于添加表1的数据到表2,除了上面的那种方法外,有没有其它的方法?
能不能不用读出每一条记录的每一项,用拼装的方式插入到另一张表中去?
数据库复制

解决方案 »

  1.   

    如果忽略权限控制,那么可以在目标数据库建立一个指向源数据库的dblink,在应用程序中使用insert into select from的方式。
      

  2.   

    直接执行这句就可以了:
    insert into Table2(列名1,列名2)select 列名1,列名2 from Table1 where statue = '2'
      

  3.   

     1楼正解,直接用   insert into table2(...) select ... from table1 where ...
      

  4.   

    列一致的话直接
    insert into Table2
    select * from Table1 where statue = '2'
      

  5.   


    但数据源不一样,Table1 在20130925.db里面,Table2 在20130926.db里面.
      

  6.   


    在20130925.db下创建一个dblink指向20130926.db
    然后在执行
    insert into Table2(列名1,列名2)select 列名1,列名2 from Table1@dblink名称 where statue = '2'