一:在一个事务中执行如下语句:
select *
from TableAselect *
from TableB结果总是先返回TableA的数据,后返回TableB的数据。
有没有办法将TableA的数据清除,只返回TableB的数据。
二:我能用sql语句遍历到数据库中所有的表吗?就是我不管表名是什么,我想用sql语句将表的数据清除,但是表又不能删除(所以删除数据库的方法不行),而数据表的名字不确定,随时都可能变!
请问如何做?
select *
from TableAselect *
from TableB结果总是先返回TableA的数据,后返回TableB的数据。
有没有办法将TableA的数据清除,只返回TableB的数据。
二:我能用sql语句遍历到数据库中所有的表吗?就是我不管表名是什么,我想用sql语句将表的数据清除,但是表又不能删除(所以删除数据库的方法不行),而数据表的名字不确定,随时都可能变!
请问如何做?
解决方案 »
- 求助:将一个字符串转换为浮点数的转换函数。
- sql server 2008 peer-to-peer 复制,怎么样定时执行
- 一个SQL语句……
- SQL数据表怎样做增量备份?
- 关于nvarchar的长度问题,不好搞啊,急......
- 关于UpdateText的问题,没解决.再次以100分相送.请邹键等高手进
- sql 2000复写初始化时无法批量插入记录
- 查询中可能出现零除的解决方案。进者有分,解决问题的50分以上,不够再加分
- 关于复制,错误提示:进程未能读取文件--快照位置
- 500分求解一个困扰多年的问题
- 我连接两个表作了一个索引视图,但是更新其中一个表时就出错了,这是怎么回事??
- UPDATE 俩个表问题!
select * from TableA
go
select * from TableB
go
结果总是先返回TableA的数据,后返回TableB的数据。有没有办法将TableA的数据清除,只返回TableB的数据
---------------------------
你先选TableA的数据 当然先返回了 后面一句话不清楚你的意思?二:我能用sql语句遍历到数据库中所有的表吗?就是我不管表名是什么,我想用sql语句将表的数据清除,但是表又不能删除(所以删除数据库的方法不行),而数据表的名字不确定,随时都可能变!请问如何做?
---------------------------
可以使用master..sp_msforeachtable系统存储过程
exec master..sp_msforeachtable "truncate table '?'"
declare @sql varchar(1000),@name varchar(100)
declare c1 cursor scroll for
select [name] from sysobjects where xtype='U'
open c1
fetch first from c1 into @name
while @@fetch_status=0
begin
set @sql='truncate table '+@name
exec(@sql)
end
close c1
deallocate c1
declare c1 cursor scroll for
select [name] from sysobjects where xtype='U'
open c1
fetch first from c1 into @name
while @@fetch_status=0
begin
set @sql='truncate table '+@name
exec(@sql)
fetch next form c1 into @name
end
close c1
deallocate c1
select * from TableA
go
select * from TableB
go
结果总是先返回TableA的数据,后返回TableB的数据。有没有办法将TableA的数据清除,只返回TableB的数据
---------------------------
你先选TableA的数据 当然先返回了 后面一句话不清楚你的意思?
========================================================
是我没有说清楚!我是想在返回的数据集中没有TableA的数据。就是在sql语句中执行sq语句:
select * from TableA
select * from TableB
但是返回的时候只返回TableA的数据。
这样说也许还是不清楚!我就这样说吧!
需求:一般的信息系统登录验证,他们不限制用户名密码串长度,也不做一般化的处理,比如用户名密码有"'"字符的处理。这对sqlserver2000是危险的!因为可以用这个来执行任何的sql语句。如下(用c#):
sqlstr="select *
+" From LoginTableName"
+" Where LoginName='"+textBox1.Text+"' and PWD='"+textBox2.Text+"'"
这个时候如果在textBox1.Text中输入精心组织好了的话,就可以为所欲为了!
sqlstr="select * "
+" From LoginTableName"
+" Where LoginName='"+textBox1.Text+"' and PWD='"+textBox2.Text+"'"
这个语句代表的就是select * from TableA吧?
如果是这样,象让SELECT语句不返回值的办法就是声明个局部变量,大概意思如下,楼主自己转换为C#字符串表达式吧:
declare @i int
select @i = count(1) from LoginTableName where LoginName = 'USERNAME' and PWD = 'PASSWORD' /*相当于select * from tableA */
if @i = 0
begin
raiserror('Sorry,You are not members!',16,1) /*返回错误,不是成员*/
... /*其它处理代码*/
return
end
select * from tableB /*相当于select * from tableB */
还有,如果那个单引号的问题没有做处理,那么别人就可用你的系统在你的系统的后台数据库上捣鼓一些东西!
请你们仔细的想一想!
以上是在sqlserver2000的环境下讨论的!