高手请进:由数据库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时根据值来判断赋值比较简单
请高手指点
...全文
86 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧