sql查询语句中的记录不存在 asp.net访问数据库时,如果sql查询语句中的记录不存在,ExecuteReader()就会报错"select附近有错误",该怎么判断要查询的记录是否不存在? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 try { int count = 0; String cnnStr = ConfigurationManager.ConnectionStrings["SERVER"].ConnectionString; SqlConnection cnn = new SqlConnection(cnnStr); String cmdStr = @"declare @s varchar(50) select @s=DataBaseName from Metadata_DB where ID=(select DB from Metadata_Terrain where Level='" + level + "' and Row='" + row + "' and Col='" + col + "') exec('use '+@s+' select Data from Data where Level=''" + level + "'' and Row=''" + row + "'' and Col=''" + col + "''')"; using (SqlCommand cmd = new SqlCommand(cmdStr, cnn)) { cnn.Open(); SqlDataReader dataReader = cmd.ExecuteReader(); while (dataReader.Read()) { Response.BinaryWrite((byte[])dataReader["Data"]); count=((byte[])dataReader["Data"]).Length; } dataReader.Close(); Response.ContentType = "application/zip"; } cnn.Close(); } catch (SqlException e){} Response.End(); Response.Close(); where ID===>where ID IN select count(1) from db where select count(*) from db 应该是的在exec('use '+@s+'前 加上if(@s is not null)因为当@s为空时,你没有办法改变数据库的。 还是通过参数SqlParameter查询,获取返回的参数值 where ID isnull((select DB from ),0)对你查询的值进行判断一下,如果不存在的话,SQL会返回NULL,判断一下,如果是NULL的话,给它一个默认值。这样就不会出来这种情况了 select top 1 DB from Metadata_Terrain 主要你的where条件有两条以上的时候就会报错哦 也可以加个 TOP 1 select * from t5 where name in( )如果括号内只有一个数,那么in与=是一样的 select附近有错误 很明显 SQL语句错误 "select附近有错误", 意思是 sql语句有错误,和数据没关系的啊 要取的记录没有存在,才出现"select附近有错误"的,并不是我写的sql字符串有错误 首先 纠正 你两个错误1.in 和= 是不一样的 in 返回多条结果 =只返回一条2.sql 附近有语法错误,是sql语句写的有问题,和查没查到数据没关系把 SQL 语句放到 查询分析器里 执行以下 就知道有没有问题了 给Datetime 赋空值,用过的来指点下我 asp.net为什么不支持硬盘缓存了 static public声明的变量能不能销毁? 用户控件中如何控制脚本输出的位置 gridview 问题 method中post和get有什么区别 高分...如何调用其他数据库存取过程(150分) 如何判断gridview的改变 哪位大虾知道怎样实现dreamweaver和asp.net的结合(马上给分) 如何配置我的机器,才能运行和编译asp+程序,需要下载什么软件?谢谢!! SQL Server2000 附加数据库 报 错误602 求解决 动态添加js确认对话框,导致页面死掉的问题
try
{
int count = 0;
String cnnStr = ConfigurationManager.ConnectionStrings["SERVER"].ConnectionString;
SqlConnection cnn = new SqlConnection(cnnStr);
String cmdStr = @"declare @s varchar(50)
select @s=DataBaseName from Metadata_DB where ID=(select DB from Metadata_Terrain where Level='" + level + "' and Row='" + row + "' and Col='" + col + "') exec('use '+@s+' select Data from Data where Level=''" + level + "'' and Row=''" + row + "'' and Col=''" + col + "''')";
using (SqlCommand cmd = new SqlCommand(cmdStr, cnn))
{
cnn.Open();
SqlDataReader dataReader = cmd.ExecuteReader();
while (dataReader.Read())
{
Response.BinaryWrite((byte[])dataReader["Data"]);
count=((byte[])dataReader["Data"]).Length;
}
dataReader.Close();
Response.ContentType = "application/zip";
}
cnn.Close();
}
catch (SqlException e){}
Response.End();
Response.Close();
where ID IN
在exec('use '+@s+'前 加上if(@s is not null)
因为当@s为空时,你没有办法改变数据库的。
对你查询的值进行判断一下,如果不存在的话,SQL会返回NULL,判断一下,如果是NULL的话,给它一个默认值。这样就不会出来这种情况了
1.
in 和= 是不一样的 in 返回多条结果 =只返回一条
2.
sql 附近有语法错误,是sql语句写的有问题,和查没查到数据没关系
把 SQL 语句放到 查询分析器里 执行以下 就知道有没有问题了