【问题标题】:ASP.Net insert data from Textbox to a databaseASP.Net 将文本框中的数据插入数据库
【发布时间】:2012-01-20 13:08:38
【问题描述】:

我试图将文本框中的数据插入到我的数据库中,但它抛出了一个异常。

异常详细信息:System.Data.SqlClient.SqlException:“测试”附近的语法不正确。

在我展示我的代码之前有一些细节: 我的数据库名为:电影 我的表数据称为:用户 我有诸如:“FirstName”、“LastName”等列...

protected void Register_Click(object sender, EventArgs e) { SqlConnection connection = new SqlConnection("Data Source=MICROSOF-58B8A5\SQL_SERVER_R2;Initial Catalog=Movie;Integrated Security=True");

        connection.Open();
        //FirstName***********
        string firstName = FirstNameTextBox.Text;
        string sqlquery = ("INSERT INTO [Users] (FirstName) VALUES (' " +FirstNameTextBox.Text + " ' ");

        SqlCommand command = new SqlCommand(sqlquery , connection);
        command.Parameters.AddWithValue("FirstName", firstName);
        //LastName************
        string lastName = LastNameTextBox.Text;
        sqlquery = ("INSERT INTO [Users] (LastName) VALUES (' " + LastNameTextBox.Text+ " ' ");
        command.Parameters.AddWithValue("LastName", lastName);
        //Username*************
        string username = UsernameTextBox.Text;
        sqlquery = ("INSERT INTO [Users] (Username) VALUES (' " + UsernameTextBox.Text+ " ' ");
        command.Parameters.AddWithValue("UserName", username);
        //Password*************
        string password = PasswordTextBox.Text;
        sqlquery = ("INSERT INTO [Users] (Password) VALUES (' " + PasswordTextBox.Text + " ' ");
        command.Parameters.AddWithValue("Password", password);
        if (PasswordTextBox.Text == ReTypePassword.Text)
        {
            command.ExecuteNonQuery();
        }
        else
        {
            ErrorLabel.Text = "Sorry, You didnt typed your password correctly.  Please type again.";
        }

        connection.Close();
    }

【问题讨论】:

    标签: c# asp.net sql-server database insert


    【解决方案1】:

    也添加以下内容:

    string sqlquery = "INSERT INTO [Users] (FirstName,LastName,Username,Password) VALUES ( " +FirstNameTextBox.Text + " ,";
    sqlquery +=  LastNameTextBox.Text+ ",";
    sqlquery +=   UsernameTextBox.Text+ ",";
    sqlquery +=  PasswordTextBox.Text + " )";
    SqlCommand command = new SqlCommand(sqlquery , connection);
    

    【讨论】:

      【解决方案2】:

      也许这段代码更短:

      sqlcommand command=new sqlcommand("insert into[Users](FirstName,LastName,UserName,Password) values('"+FirstNameTextBox.Text+"','"+LastNameTextBox.Text+"','"+UsernameTextBox.Text+"','"+PasswordTextBox.Text+"')",connection);
      command.ExecuteNonQuery();
      

      【讨论】:

        【解决方案3】:

        问题似乎是您正在创建一个奇怪的 SQL 指令。它的真正价值是 INSERT INTO [Users] (FirstName) VALUES ('(theValue)') 并且您没有添加其余的值(姓氏等)。其余代码什么都不做,因为查询不包含其余参数。

        【讨论】:

          【解决方案4】:

          使用一个查询并使用@ParamName

              string sqlquery = "INSERT INTO [Users] (FirstName,LastName,UserName,Password) VALUES (@FirstName,@LastName,@UserName,@Password)";
              SqlCommand command = new SqlCommand(sqlquery , connection);
          
              //FirstName***********
              string firstName = FirstNameTextBox.Text;
              command.Parameters.AddWithValue("FirstName", firstName);
              //LastName************
              string lastName = LastNameTextBox.Text;     
              command.Parameters.AddWithValue("LastName", lastName);
              //Username*************
              string username = UsernameTextBox.Text;     
              command.Parameters.AddWithValue("UserName", username);
              //Password*************
              string password = PasswordTextBox.Text;    
              command.Parameters.AddWithValue("Password", password);
          
              ...........
          

          【讨论】:

          • 该参数将避免危险的SQL注入攻击。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-05-05
          • 2016-03-24
          • 2016-09-01
          • 2017-12-03
          • 2023-03-17
          • 1970-01-01
          • 2013-03-27
          相关资源
          最近更新 更多