C# 单击“提交”按钮时出现语法错误,我的SQL表出现问题,因此不知道是否可以链接它
我在注册表上单击“提交”时出现此错误- System.Data.SqlClient.SqlException:“关键字“Table”附近的语法不正确。” 下面是我的代码:C# 单击“提交”按钮时出现语法错误,我的SQL表出现问题,因此不知道是否可以链接它,c#,web,C#,Web,我在注册表上单击“提交”时出现此错误- System.Data.SqlClient.SqlException:“关键字“Table”附近的语法不正确。” 下面是我的代码: if(IsPostBack) { SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString); conn.Open(); strin
if(IsPostBack)
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
conn.Open();
string checkuser = "select count(*) from Table where UserName='" + TextBoxUN.Text +"'";
SqlCommand com = new SqlCommand(checkuser, conn);
int count = Convert.ToInt32(com.ExecuteScalar());
{
Response.Write("User already Exists");
}
conn.Close();
正如MickyD和Dour High Arch在评论中指出的,“Table”在SQL中是一个保留字 您可以通过在查询中将
表放在方括号([])内来避免错误:
string checkuser = "select count(*) from [Table] where UserName='" + TextBoxUN.Text +"'";
然而,这并没有解决真正的问题——设计。您有一个名为table
的表。你应该强烈地考虑一个真实的名字,根据它将用于什么(例如,“学生”,“销售”等)。
安全
此外,您还存在SQL注入漏洞。您应该查看这意味着什么以及如何参数化查询。可以用[]
将表
括起来。像这样:[Table]
。可能不是表B的最佳名称,那么如果count为零呢?在有人创建类似于Bobby'和'0'='
的用户名之前,您需要这样做。而Table
是一个SQL保留字,您应该创建有意义的表名。啊,是的,添加到Steve的精彩评论中-您是否忘记了if
语句?回答不错+1.