错误是在nchar附近说错误的语法这是visual studio建议的
错误表明第31行:
在预期条件的上下文中指定的非布尔类型的表达式,在' Name'附近。 int temp = Convert.ToInt32(com.ExecuteScalar());
我的代码在
之下protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["RegistrationConnectionString"].ConnectionString);
conn.Open();
string checkuser = "select count(*) from [Table] where User Name=@User Name";
SqlCommand com = new SqlCommand(checkuser, conn);
com.Parameters.Add("@User Name", SqlDbType.NChar, 20).Value = TextBoxUN.Text;
int temp = Convert.ToInt32(com.ExecuteScalar());
if (temp == 1)
{
Response.Write(" USER ALREADY EXISTS ");
}
conn.Close();
}
}
答案 0 :(得分:5)
如果您使用的数据库对象和参数名称不止一个单词,则需要使用方括号,如[User Name]
还可以使用using
statement来处置您的SqlConnection
和SqlCommand
。
using(SqlConnection conn = new SqlConnection(connString))
using(SqlCommand com = conn.CreateCommand())
{
com.CommandText = "select count(*) from [Table] where [User Name] = @UserName";
com.Parameters.Add("@UserName", SqlDbType.NChar, 20).Value = TextBoxUN.Text;
conn.Open();
int temp = Convert.ToInt32(com.ExecuteScalar());
}
作为最佳做法,不为您的表名或列名使用多个单词。
答案 1 :(得分:1)
试试
string checkuser = "select count(*) from [Table] where [User Name]=@UserName"
SqlCommand com = new SqlCommand(checkuser, conn);
com.Parameters.Add("@UserName", SqlDbType.NChar, 20).Value = TextBoxUN.Text;
如果列中包含空格,则应将列名包装在大括号中。因此,列名称User Name应该放在方括号' []'中,对于参数名称" @User Name",我不认为它会接受它你也不应该删除参数名中的空格。