update a set
select * from T1 t1 inner join T2 t2 on t1.id=t2.id 这个是多条记录 后面加个具体从控件中取得字段 加上where b.id='10000' 后该查询语句确定只有一条记录
update a set
你的b从哪里来的,为什么你update a表 from的TB表和TB2表这俩表和a的关系是什么
b=t2不好意思。可以看成t2.field 笔误
@good_idea: 那么a t1 t2表之间的关系呢,a是t1吗
@_legends: 是的,习惯性设啊a,b了。具体在后面问题补充,已付上。刚开始也以为是更新了多条语句,后面排除了很多可能,id是不为空的,表数据不为空的.....等等。
@good_idea:
UPDATE TB a
INNER JOIN TB2 b ON a.id = b.id
SET a.field1 = b.field1,
a.field2 = b.field2,
a.fieldn = b.fieldn
WHERE
b.id = '100001'
@_legends:额,还是报一样的错。
@good_idea: 看下你是不是数据库选错了,
@_legends:
format sql error. target database is 'MS SQL Server' detail message is :
update's tableSource is null
和我的sql报错一样的,sql格式报错,表资源为空。两个表a,b都是有数据的。
select * from T1 a inner join T2 b on a.id=b.id 这个查询有多条记录。后面加where 条件 b.id='100001'后有一条记录。表实体数据库中也有查询得到。
@good_idea: 看你set的字段都对不对,在TB,TB2表里面有没有
@_legends: 确定都有,并且对应的上,在sql server数据库中执行并且无误,但把sql放C#代码中执行就报了这个问题。可以确定数据库连接代码,执行代码等均没有问题。
@good_idea: 既然在数据库中sql没有错能执行那就肯定是C#的错了,看看配置的数据库源对不对,我是做java的c#没学过
@_legends: 这个也不全对的,数据库可以执行,代码中不能执行的例子是有的。比如你弄个子查询,并以该视图为子表的查询,由于没有表实体的报错。数据库的配置是测试过的,也就那么几行代码,这个是可以保证的,update的执行也可以保证的。并且是直接从以往的可以正确执行的代码里面扣的。几乎不存在错误的可能性。
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
最后把这个sql放到存储过程里面去了,然后代码调用存储过程,啥事没有。在论坛问了下其他人原因,大佬说,这是sql的转义问题。囧了