【发布时间】:2019-12-30 20:02:52
【问题描述】:
我有一个非常愚蠢的问题。我正在做一个选择,我希望当值为空时,返回一个空字符串。当sql查询中有值时,查询一切正常,但如果查询中没有任何内容,我必须给sqlCommand.CommandTimeout大于300,但有时会超时。对此有解决方案吗?
public string TesteMetodo(string codPess)
{
var vp = new Classe.validaPessoa();
string _connection = vp.conString();
string query = String.Format("SELECT COUNT(*) FROM teste cliente WHERE cod_pess = {0}", codPess);
try
{
using (var conn = new SqlConnection(_connection))
{
conn.Open();
using (var cmd = new SqlCommand(query, conn))
{
SqlDataReader dr = cmd.ExecuteReader();
if(dr.HasRows)
return "";
return codPess;
}
}
}
【问题讨论】:
-
当查询返回行时,您将返回一个空字符串。因为它是
COUNT,所以它总是返回一行:计数。我猜你想知道返回的实际计数,而不是查询返回的行(总是一行),对吧? -
cod_pes的种类是什么?
-
根据您的标签,您正在使用 SQL-Server。针对表名中包含空格的表的 SQL 查询需要特别注意。请改用
SELECT COUNT(*) FROM [teste cliente] WHERE ...。除此之外,@Andrew 是正确的……您将始终返回一个空字符串。 -
请阅读参数化查询。没有使用
String.Format。
标签: c# sql-server ado.net