2015-10-02 107 views
0

我想从单个行读取单个列。执行查询后,没有行被返回,但有字段。SQL Server查询不返回任何行

当我看到读者HasRows是假的,但场数为1

string sql = "select userid from aspnet_Membership where loweredemail = '@email'"; 

SqlCommand sqlCommand = new SqlCommand(sql, THOGConnection); 

string emailAddress = (string)account["ree_thogemail"]; 
emailAddress = emailAddress.ToLower(); 
sqlCommand.Parameters.AddWithValue("@email", emailAddress); 

SqlDataReader reader = sqlCommand.ExecuteReader(); 

while(reader.Read()) 
{ 
    userId = (Guid)reader["userid"]; 
} 

如果我行中选择所有列,则场数为21,但仍存在任何行。

为什么我不返回任何行?

谢谢,加里

+1

你不需要在@email周围使用''。使用'select userid from aspnet_Membership where loweredemail = @ email' –

+0

在管理工作室中运行查询时,它是否返回行? –

回答

2

你并不需要使用'周围@email 。用途:

string sql = "select userid from aspnet_Membership where loweredemail = @email" 

其实它没有返回值,因为没有与loweredemail = '@email'没有记录,而没有与唱片例如loweredemail = '[email protected]'
使用参数时,不需要单引号。

+0

解决了这个问题。我只是想知道sql引擎在做什么,它会返回一列而不是一行?谢谢 – Gary

+0

@Gary事实上,它没有返回任何值,因为loweredemail ='@email'时没有记录,而loweredemail ='[email protected]'时有记录。使用参数时,不需要单引号。 –

+0

@Gary欢迎:) –

0

。在你的SQL查询语法错误:

string sql = "select userid from aspnet_Membership where loweredemail = '@email'"; 

应该像下面

string sql = "select userid from aspnet_Membership where loweredemail = @email";