导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

高手请进:由数据库a中的表更新数据库b中的表的问题

suekey 2007-12-17 04:56:17
问题描述:
现有
数据库a : table1 : sgjd字段,sgxh
数据库b : table2 : jsjz字段,sgxh
table2为主表,table1的sgjd字段更新table2的jsjz字段,两表用sgxh为关联字段。 当table1中的sgjd字段值为0到1之间的值时,对应的table2的jsjz字段值为0,table1的sgjd字段值为1时,对应的table2的jsjz字段为1。
如何实现更简单?我想用sql语句来做。
//创建conn为数据库a的连接
string sel="update b.sde.table2 set b.sde.table2.jsjz=a.sde.table1.sgjd from a.sde.table1 where a.sde.sgxh=b.sde.sgxh";
sqlcommand cmd=new sqlcommand(sel,con);//这里只能赋给一个连接啊,怎么同时连接2个数据库呢
这个语句老是提示无法识别数据库b。
怎么在查询table1的sgjd时根据值来判断赋值比较简单
请高手指点
...全文
36 点赞 收藏 6
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
suekey 2007-12-17
谢谢各位的回复.请尽量详细点,新手在此谢过
回复
suekey 2007-12-17
这个需不需要先读数据库b,然后取出来一条记录一条记录的遍历,更新数据库a的表1?
回复
我有才 2007-12-17
可以用触发器实现啊
对tabel2建立更新和插入触发器就是了
回复
dawugui 2007-12-17
不同服务器数据库之间的数据操作(转)

--创建链接服务器 
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用户名 ', '密码 '

--查询示例
select * from ITSV.数据库名.dbo.表名

--导入示例
select * into 表 from ITSV.数据库名.dbo.表名

--以后不再使用时删除链接服务器
exec sp_dropserver 'ITSV ', 'droplogins '

--连接远程/局域网数据(openrowset/openquery/opendatasource)
--1、openrowset

--查询示例
select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)

--生成本地表
select * into 表 from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)

--把本地表导入远程表
insert openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)
select *from 本地表

--更新本地表
update b
set b.列A=a.列A
from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 b
on a.column1=b.column1

--openquery用法需要创建一个连接

--首先创建一个连接创建链接服务器
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
--查询
select *
FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ')
--把本地表导入远程表
insert openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ')
select * from 本地表
--更新本地表
update b
set b.列B=a.列B
FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ') as a
inner join 本地表 b on a.列A=b.列A

--3、opendatasource/openrowset
SELECT *
FROM opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' ).test.dbo.roy_ta
--把本地表导入远程表
insert opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ').数据库.dbo.表名
select * from 本地表
回复
jinjazz 2007-12-17
链接服务器
回复
dawugui 2007-12-17
先建立A到B的连接.如果同机同用户,可以直接b.sde.table2.
如果是, servernameb.b.sde.table2
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告