日期:2014-05-17  浏览次数:20437 次

新手求助登陆连接SQL
小弟新学,做了个简单的登陆界面,运行时出现错误,请帮忙解决。
protected void Button1_Click(object sender, EventArgs e)
  {
  if (this.TextBox2.Text != "")
  {
  if (this.TextBox1.Text != "")
  {
  string sql;
  sql =string.Format( "select * from User where Name='" + this.TextBox2.Text.Trim()+ "' and PassWord='" + this.TextBox1.Text.Trim() + "'");
  try
  {
  SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["巡检系统数据库ConnectionString"].ConnectionString);
  conn.Open();
  SqlCommand cmd=new SqlCommand(sql,conn);
  cmd.Connection = conn;
  int state=Convert.ToInt32(cmd.ExecuteScalar());
  if(state==0||state>1)
  {
  this.Label3.Text="用户不存在,请检测用户名和密码是否正确!";
  }
  else
  {
  this.Label3.Text="登录成功!";
  }
  conn.Close();
  }
  catch (Exception ex)
  {
  throw new Exception(ex.ToString());
  }
  }
  else
  {
  this.Label3.Text = "请输入密码!";
  }
  }
  else
  {
  this.Label3.Text = "请选择用户!";
  }
  }
}

运行程序,页面可以打开,输入用户名和密码后,点确定,提示如下

“/巡检系统”应用程序中的服务器错误。
--------------------------------------------

System.Data.SqlClient.SqlException: 关键字 'User' 附近有语法错误。
  在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
  在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
  在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
  在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
  在 System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
  在 System.Data.SqlClient.SqlDataReader.get_MetaData()
  在 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
  在 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
  在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
  在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
  在 System.Data.SqlClient.SqlCommand.ExecuteScalar()
  在 Login.Button1_Click(Object sender, EventArgs e) 

这个是什么意思呀?



------解决方案--------------------
User可能是SQLSERVER内部使用的关键字,改成:
sql =string.Format( "select * from [User] where Name='&qu