我在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)
{
}
答案 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。