将adoquery1.connectionstring如上设置; adoquery1.SQL.Add('insert into table1 select * FROM table2');
前面我可能没有说清楚,具体如下: 在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;"
就是用in子句连接带密码的access数据库,最好不用odbc,请帮帮忙!谢谢了!
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;
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;
adc.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=yourdatabasename;Persist Security Info=True;Jet OLEDB:Database Password=yourpassword';
然后用ado.gettablenames可以获得所有的数据库里的表
数据的导入确实没有想出很好的办法?
adoquery1.SQL.Add('insert into table1 select * FROM table2');
在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;"
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;
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;