将SELECT COUNT(*)语句结果放入int变量

时间:2015-04-16 16:17:24

标签: c# sql visual-studio

我在SELECT COUNT(*)中有一个C#/ASP.NET语句,我希望将结果存储为int以用作IF条件。但是我在visual studio中遇到错误:

  

错误:System.Data.SqlClient.SqlException(0x80131904):数据类型text和varchar在等于运算符中不兼容。在System.Data.SqlClient.SqlConnection。

它告诉我它出现在 int temp 行。我在数据库表中访问的列是文本类型。

conn.Open();    
String checkEmail = "select count(*) from Players where PlayerEmail= '" + txtEmailLogIn.Text + "'";
SqlCommand com = new SqlCommand(checkEmail, conn);
int temp = Convert.ToInt32(com.ExecuteScalar().ToString());
conn.Close();
if (temp > 0) 
{

}

2 个答案:

答案 0 :(得分:5)

问题在于你的SQL。在比较=数据类型时,您无法使用TEXT,而是可以使用LIKE

String checkEmail = "select count(*) from Players where PlayerEmail LIKE '" + txtEmailLogIn.Text + "'";

但是要注意,在编写像这样的SQL字符串时,你正在打开SQL注入攻击。

答案 1 :(得分:0)

DavidG上面的回答很有效。但是,如果您有机会更改数据库架构,则还可以通过将PlayerEmail列从text更改为varchar(max)来修复错误。自至少2005年以来,文本数据类型一直是deprecated