我想将一个access数据库中的所有表的记录全部插入到另一个access数据库中,
两个库都带有密码,请问用sql语句如何实现?

解决方案 »

  1.   

    连接代密码的数据库
    adc.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=yourdatabasename;Persist Security Info=True;Jet OLEDB:Database Password=yourpassword';
    然后用ado.gettablenames可以获得所有的数据库里的表
    数据的导入确实没有想出很好的办法?
      

  2.   

    建立两个ADOConnection,分别连接两个Access。ConnectionString用楼上的即可。
      

  3.   

    将adoquery1.connectionstring如上设置;
       adoquery1.SQL.Add('insert into   table1  select * FROM table2');
      

  4.   

    前面我可能没有说清楚,具体如下:
    在Access中,以下语句执行成功。把SQL Server表Proudcts的
    所有数据导入到本地的Access的Products表中。select * into Products from Products IN [ODBC][ODBC;Driver=SQL Server;UID=sa;PWD=123456;Server=127.0.0.1;DataBase=Trade;]但是,我目前只能到得一个SQL Server的连接字符串
    provider=SQLOLEDB.1;Password=123456;User ID=sa;Initial Catalog=Trade;Data Source=127.0.0.1;
    因为要从上面那个字符串中取密码/用户名/服务器有点麻烦.
    能否把上面那个SQL语句中的[ODBC]之类的东东换成下面的那个连接字符串的连接方式?
    ______________________________________________________________________________
    参考:
    select * into Products from Products in "c:\test.xls" "excel 8.0;"
    能够将Excel中的数据导入到Access中。______________________________________________________________________________
    Accesss中的In子句帮助:
    IN 子句
    标识出外部数据库中的表,例如dBASE或Paradox数据库,或Microsoft Jet外部数据库,Microsoft Jet数据库引擎能够与之相连。语法
    标识目标表:[SELECT | INSERT] INTO destination IN
        {path | ["path" "type"] | ["" [type; DATABASE = path]]}标识数据源表:FROM tableexpression IN
        {path | ["path" "type"] | ["" [type; DATABASE = path]]}包含 IN 子句的SELECT 语句具有以下几个部分:部分 说明 
    destination 外部表的名称,将数据插入表中。 
    tableexpression 表的名称,可从这些表中获取数据。这个变量可能是一个单独的表名,一个已存查询,或是 INNER JOIN, LEFT JOIN, 或 RIGHT JOIN. 
    Path 目录或文件的整个路径,而且这些目录或文件包含 table 。 
    type 数据库类型的名称,如果数据库不是 Microsoft Jet 数据库(例如 dBASE III、dBASE IV、Paradox 3.x或Paradox 4.x),则用此类型创建 table 。 
    说明
    通过 IN 你一次只可以连接一个外部数据库 在某些情况中,path 参数可引用包含数据库文件的目录。例如,当使用 dBASE、FoxPro或 Paradox 数据库表时,path 参数将指定包含 .dbf 或 .db 文件的目录。由 destination 或 tableexpression 参数可得到表文件的名称。为了指定非 Microsoft JET 数据库,可在名称之后附加分号 (;),并用单引号 (' ') 或 (" ") 双引号将它括入。例如可用 'dBASE IV;' 或 "dBASE IV;"这两种写法。也可使用 DATABASE 保留字指定外部数据库。例如,以下示例指定相同的表:... FROM Table IN "" [dBASE IV; DATABASE=C:\DBASE\DATA\SALES;];... FROM Table IN "C:\DBASE\DATA\SALES" "dBASE IV;"
      

  5.   

    就是用in子句连接带密码的access数据库,最好不用odbc,请帮帮忙!谢谢了!
      

  6.   

    adoconnection1.Close;
        adoconnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=数据库名;Persist Security Info=False;Jet OLEDB:Database Password=密码;
        adoconnection1.Open;
     query:=Tadoquery.Create(self);
        with query do
        begin
          connection:=adoconnection1;
          sql.Clear;
          sql.Add('select * from enterprise where taskyear<>'''+year+'''');
          open;
        end;
    for i:=0 to tablelist.Count-1 do
        begin
          with cmd do
          begin
            commandtext:='insert into '+tablelist[i]+' select * from '+tablelist[i]+' IN "" [Ms Access;database=数据库名;pwd=密码;] ';
            execute;
          end;
      

  7.   

    adoconnection1.Close;
        adoconnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=数据库名;Persist Security Info=False;Jet OLEDB:Database Password=密码;
        adoconnection1.Open;
     query:=Tadoquery.Create(self);
        with query do
        begin
          connection:=adoconnection1;
          sql.Clear;
          sql.Add('select * from enterprise where taskyear<>'''+year+'''');
          open;
        end;
    for i:=0 to tablelist.Count-1 do
        begin
          with cmd do
          begin
            commandtext:='insert into '+tablelist[i]+' select * from '+tablelist[i]+' IN "" [Ms Access;database=数据库名;pwd=密码;] ';
            execute;
          end;