日期:2014-05-19  浏览次数:20841 次

c#连接两个数据库100分
vs.net2005   从一个数据库里读取数据,写到另外一个数据里。怎样做比较好

------解决方案--------------------
string strConn= "data source=.;database={0};uid=sa;pwd=; "

读取的数据库名: strDbFrom= "XX ";
读取的数据库名: strDbTo= "YY ";

SqlConnection _connFrom=new SqlConnection(String.Format(strConnFrom,strDbFrom));

....
------解决方案--------------------
用opendatasource方法
string sql = "insert MyTable SELECT * FROM OPENDATASOURCE( 'SQLOLEDB ', 'Data Source=servername;User ID=MyUid;Password=MyPass ').Database.dbo.TableName ";
SqlCommand cmd = new SqlCommand(sql,new SqlConnection(myConnectionString));
cmd.Connection.Open();
cmd.ExecuteNonQuery();
cmd.Connection.Close();

------解决方案--------------------
两个connection

------解决方案--------------------
推荐用DTS做
找找你装了没 大概在 C:\Program Files\Microsoft SQL Server\90\DTS
------解决方案--------------------
存储过程实现把,在一个数据库建一个存储过程,调用一下就可以

访问非本地数据库的表 机器名.数据库名.dbo.表名

不同域的数据库可以采用 链接数据库来实现
------解决方案--------------------
笨方法,用两个连接分别连两个库,将所需数据分别读到两个数据集中,再用数据集来处理,

insert,update,delete都可以的。
------解决方案--------------------
两个库在同一个服务器直接写语句就是,如:insert db.table ……
不在一个服务器就用两个连接字符串分别处理嘛
------解决方案--------------------
笨方法,用两个连接分别连两个库,将所需数据分别读到两个数据集中,再用数据集来处理,

insert,update,delete都可以的。


这样子很难保证数据的一致性,提交的时候,一个成功,一个失败,很麻烦
------解决方案--------------------
如果你的那个数据库用户(如SA)有权限访问你需要的数据库,你可以不用管配置文件的数据库配置,直接写如下SQL

假设有两个数据库book, user, 在同一个数据库服务器
连接字符串= "data source=.;database=book;uid=sa;pwd=111; "
insert user.dbo.teacher(id, name ....)
select id, name ... from book.dbo.users where xxx = yyy

直接在一个sql中,访问两个数据库.
这时候,虽然我们的连接字符串写了book数据库,但我们可以
update user.dbo.用户信息表 set name = xxx where ....
使用SQL中的
如果表或视图存在于同一台运行 Microsoft® SQL Server™ 的计算机的其它数据库中,应按格式 database.owner.object_name 使用完全合法的名称。如果表或视图存在于本地服务器之外的一台链接的服务器上,应按以下格式使用由四部分组成的名称:linked_server.catalog.schema.object。如果由四部分构造的表(或视图)名称使用 OPENDATASOURCE 函数作为名称中的服务器部分,则该名称也可用于指定表源。有关该函数的更多信息,请参见 OPENDATASOURCE。


------解决方案--------------------
string SQL= "Select table1.*,table2. 字段 from table3 ";