如何确定SqlDataAdapter中是否返回零记录

时间:2009-08-18 07:32:21

标签: asp.net sqldataadapter

我有以下代码

  string connString = ConfigurationManager.ConnectionStrings["XXXConnectionString"].ConnectionString;
        SqlConnection conn = new SqlConnection(connString);
        conn.Open();

        SqlDataAdapter SQLDataAdapter1 = new SqlDataAdapter("SELECT * FROM EVENTSignUp WHERE (MembmerEmail = " + userInfo.Email + ")", conn);
        DataTable dtResult1 = new DataTable();
        SQLDataAdapter1.Fill(dtResult1);

但是如果没有返回记录,我只会在以下位置获得例外:

        SQLDataAdapter1.Fill(dtResult1);

如何确定此查询中是否没有返回记录?

3 个答案:

答案 0 :(得分:3)

dtResult1.Rows.Count > 0

- 编辑

没有关注阅读帖子;注意你在.Fill上有例外。显然我的代码片段对你没有帮助。正如其他人所说的;什么是例外?

- 编辑:

而且,正如其他人所说,您的查询应采用以下形式:

SqlCommand command = new SqlCommand(@"
select
    *
from
    EVENTSignUp
where
    MemberEmail = @MemberEmail
");

SqlParameter param = new SqlParameter("@MemberEmail", SqlDbType.NVarChar);
param.Value = userInfo.Email;

command.Parameters.Add(param);

SqlDataAdapter dtResult1 = new SqlDataAdapter(command);
DataTable dtResult1 = new DataTable();
SQLDataAdapter1.Fill(dtResult1);

答案 1 :(得分:2)

我认为记录中的问题不是由SqlDataAdapter回溯,因为即使它是空的,它也不会产生异常。 查询中的问题,因为电子邮件字段是varchar,它应该是这样的:

SqlDataAdapter SQLDataAdapter1 = new SqlDataAdapter("SELECT * FROM EVENTSignUp WHERE (MembmerEmail = '" + userInfo.Email + "')", conn);

答案 2 :(得分:0)

您也可以使用SqlDataReader进行检查。这是一个简单的示例,用于检查SqlDataReader是否有结果:

String con_string = "Your Connection String Here";
String strSQL = "Your Query Here";
using (SqlDataReader objNameDR = SQLHelper.ExecuteReader(con_string, CommandType.Text, strSQL, null)) {

    if (objNameDR.HasRows) {
        // Having Rows
    }
    else{
       // Having No Row (Zero Record)
    }

}