2009-08-18 18 views
0

回报,我有以下代码如何确定是否零个记录在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); 

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

+0

有什么例外? – Jason 2009-08-18 07:34:08

+0

另外,它看起来像是你使用这个SQL字符串,你的电子邮件可能需要引号...... – Jason 2009-08-18 07:34:56

+1

你的SQL字符串对SQL注入攻击是开放的。使用参数化查询! – 2009-08-18 07:38:19

回答

2

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

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

同意你的意见。无论如何....参数应该传递与命令的参数集合预先注入SQL注入并获得更好的性能。 – gsharp 2009-08-18 07:52:16

+0

是的,你是正确的参数,它应该通过参数来避免注入,并且我写得非常快,只是为了让他知道问题出在哪里。 – 2009-08-18 07:54:54

+0

查询中的错字是我的问题 – leora 2009-08-18 08:06:08

2
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); 
+0

+1给出的答案减少了SQL注入攻击的可能性。 – 2009-08-18 18:15:39

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) 
    } 

} 
相关问题