从C#Webforms插入MySQL数据库,给出ArgumentException

从C#Webforms插入MySQL数据库,给出ArgumentException,c#,mysql,asp.net,webforms,argumentexception,C#,Mysql,Asp.net,Webforms,Argumentexception,我正在尝试使用Webforms创建一个注册页面,该页面将连接到MySQL数据库并插入数据,但它会引发ArgumentException(尽管我相信我完全按照我的教程操作),并且不会将数据插入表中 因此,我的注册页面C#代码为: public partial class Registration : System.Web.UI.Page { MySql.Data.MySqlClient.MySqlConnection conn; MySql.Data.MySqlClient.My

我正在尝试使用Webforms创建一个注册页面,该页面将连接到MySQL数据库并插入数据,但它会引发ArgumentException(尽管我相信我完全按照我的教程操作),并且不会将数据插入表中

因此,我的注册页面C#代码为:

 public partial class Registration : System.Web.UI.Page
{
    MySql.Data.MySqlClient.MySqlConnection conn;
    MySql.Data.MySqlClient.MySqlCommand cmd;
    String queryStr;
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void registerEventMethod(object sender, EventArgs e)
    {
        registerUser();
    }

    private void registerUser()
    {
        String connString =
System.Configuration.ConfigurationManager.ConnectionStrings["WebAppConnString"].ToString();

        conn = new MySql.Data.MySqlClient.MySqlConnection(connString);
        conn.Open();
        queryStr = "";

        queryStr = "INSERT INTO seniorschema.registration (Password1, Email, FirstName, LastName, Password2, Code)" +
            "VALUES('" + PasswordTextBox1.Text +"','"+ EmailTextbox.Text +"','"+ firstNameTextBox.Text+"','"+ LastNameTextBox.Text + "' ,'"+ PasswordTextBox2.Text +"', '"+ CodeTextBox.Text + "'  )";
        cmd = new MySql.Data.MySqlClient.MySqlCommand(queryStr, conn);

        cmd.ExecuteReader();

        conn.Close();
    }
}
我在WebConfig文件中的连接如下:

<connectionStrings>
<add name="WebAppConnString"
     connectionString="server=localhost;ID=webuser;pwd=password;database=seniorschema;"
     providerName="MySql.Data.MySqlClient"/>
</connectionStrings>


任何帮助都将不胜感激。谢谢

我不知道你在读什么教程,但他们不应该教你在构建sql命令文本时使用字符串连接

但是,您得到的错误来自connectionstring。
你应该写

String connString =ConfigurationManager.ConnectionStrings["WebAppConnString"].ConnectionString;
web.config中connectionstring的定义也有错误(输入错误?) 它是
Uid=..
而不是
ID=..

这里我将如何编写添加记录的代码

using MySql.Data.MySqlClient;

....

queryStr = @"INSERT INTO seniorschema.registration 
            (Password1, Email, FirstName, LastName, Password2, Code)
            VALUES(@pwd, @email, @first, @last, @pwd2, @code";

using(MySqlConnection conn = new MySqlConnection(connString))
using(MySqlCommand cmd = new MySqlCommand(queryStr, conn))
{
    conn.Open();
    cmd.Parameters.AddWithValue("@pwd",PasswordTextBox1.Text);
    cmd.Parameters.AddWithValue("@email",EmailTextbox.Text );
    cmd.Parameters.AddWithValue("@first",firstNameTextBox.Text);
    cmd.Parameters.AddWithValue("@last",LastNameTextBox.Text );
    cmd.Parameters.AddWithValue("@pwd2",PasswordTextBox2.Text );
    cmd.Parameters.AddWithValue("@code",CodeTextBox.Text);
    int rowAdded = cmd.ExecuteNonQuery();
}
这种方法消除了字符串连接以及正确编码值周围引号所需的所有复杂性,还消除了

最后,这确实是一个过于宽泛的论点,与你的问题没有直接联系。

从安全角度来看,以明文形式存储密码是一种不好的做法。如果有人可以获得注册表的副本或阅读注册表,他/她将能够读取所有注册用户的密码。有一些行之有效的方法可以让旁观者看不懂它们,我不知道你在读什么教程,但它们永远不应该教你在构建sql命令文本时使用字符串连接

但是,您得到的错误来自connectionstring。
你应该写

String connString =ConfigurationManager.ConnectionStrings["WebAppConnString"].ConnectionString;
web.config中connectionstring的定义也有错误(输入错误?) 它是
Uid=..
而不是
ID=..

这里我将如何编写添加记录的代码

using MySql.Data.MySqlClient;

....

queryStr = @"INSERT INTO seniorschema.registration 
            (Password1, Email, FirstName, LastName, Password2, Code)
            VALUES(@pwd, @email, @first, @last, @pwd2, @code";

using(MySqlConnection conn = new MySqlConnection(connString))
using(MySqlCommand cmd = new MySqlCommand(queryStr, conn))
{
    conn.Open();
    cmd.Parameters.AddWithValue("@pwd",PasswordTextBox1.Text);
    cmd.Parameters.AddWithValue("@email",EmailTextbox.Text );
    cmd.Parameters.AddWithValue("@first",firstNameTextBox.Text);
    cmd.Parameters.AddWithValue("@last",LastNameTextBox.Text );
    cmd.Parameters.AddWithValue("@pwd2",PasswordTextBox2.Text );
    cmd.Parameters.AddWithValue("@code",CodeTextBox.Text);
    int rowAdded = cmd.ExecuteNonQuery();
}
这种方法消除了字符串连接以及正确编码值周围引号所需的所有复杂性,还消除了

最后,这确实是一个过于宽泛的论点,与你的问题没有直接联系。

从安全角度来看,以明文形式存储密码是一种不好的做法。如果有人可以获得注册表的副本或阅读注册表,他/她将能够读取所有注册用户的密码。有一些行之有效的方法可以让旁观者看不懂它们,我不知道你在读什么教程,但它们永远不应该教你在构建sql命令文本时使用字符串连接

但是,您得到的错误来自connectionstring。
你应该写

String connString =ConfigurationManager.ConnectionStrings["WebAppConnString"].ConnectionString;
web.config中connectionstring的定义也有错误(输入错误?) 它是
Uid=..
而不是
ID=..

这里我将如何编写添加记录的代码

using MySql.Data.MySqlClient;

....

queryStr = @"INSERT INTO seniorschema.registration 
            (Password1, Email, FirstName, LastName, Password2, Code)
            VALUES(@pwd, @email, @first, @last, @pwd2, @code";

using(MySqlConnection conn = new MySqlConnection(connString))
using(MySqlCommand cmd = new MySqlCommand(queryStr, conn))
{
    conn.Open();
    cmd.Parameters.AddWithValue("@pwd",PasswordTextBox1.Text);
    cmd.Parameters.AddWithValue("@email",EmailTextbox.Text );
    cmd.Parameters.AddWithValue("@first",firstNameTextBox.Text);
    cmd.Parameters.AddWithValue("@last",LastNameTextBox.Text );
    cmd.Parameters.AddWithValue("@pwd2",PasswordTextBox2.Text );
    cmd.Parameters.AddWithValue("@code",CodeTextBox.Text);
    int rowAdded = cmd.ExecuteNonQuery();
}
这种方法消除了字符串连接以及正确编码值周围引号所需的所有复杂性,还消除了

最后,这确实是一个过于宽泛的论点,与你的问题没有直接联系。

从安全角度来看,以明文形式存储密码是一种不好的做法。如果有人可以获得注册表的副本或阅读注册表,他/她将能够读取所有注册用户的密码。有一些行之有效的方法可以让旁观者看不懂它们,我不知道你在读什么教程,但它们永远不应该教你在构建sql命令文本时使用字符串连接

但是,您得到的错误来自connectionstring。
你应该写

String connString =ConfigurationManager.ConnectionStrings["WebAppConnString"].ConnectionString;
web.config中connectionstring的定义也有错误(输入错误?) 它是
Uid=..
而不是
ID=..

这里我将如何编写添加记录的代码

using MySql.Data.MySqlClient;

....

queryStr = @"INSERT INTO seniorschema.registration 
            (Password1, Email, FirstName, LastName, Password2, Code)
            VALUES(@pwd, @email, @first, @last, @pwd2, @code";

using(MySqlConnection conn = new MySqlConnection(connString))
using(MySqlCommand cmd = new MySqlCommand(queryStr, conn))
{
    conn.Open();
    cmd.Parameters.AddWithValue("@pwd",PasswordTextBox1.Text);
    cmd.Parameters.AddWithValue("@email",EmailTextbox.Text );
    cmd.Parameters.AddWithValue("@first",firstNameTextBox.Text);
    cmd.Parameters.AddWithValue("@last",LastNameTextBox.Text );
    cmd.Parameters.AddWithValue("@pwd2",PasswordTextBox2.Text );
    cmd.Parameters.AddWithValue("@code",CodeTextBox.Text);
    int rowAdded = cmd.ExecuteNonQuery();
}
这种方法消除了字符串连接以及正确编码值周围引号所需的所有复杂性,还消除了

最后,这确实是一个过于宽泛的论点,与你的问题没有直接联系。

从安全角度来看,以明文形式存储密码是一种不好的做法。如果有人可以获得注册表的副本或阅读注册表,他/她将能够读取所有注册用户的密码。有一些行之有效的方法可以让旁观者看不懂它们

哪一行抛出了异常?另外,如果你完全遵循教程,那么你应该知道这是一个糟糕的教程。您编写的代码容易受到SQL注入攻击,以纯文本形式存储用户密码等。请研究以下问题:哪一行引发异常?另外,如果你完全遵循教程,那么你应该知道这是一个糟糕的教程。您编写的代码容易受到SQL注入攻击,以纯文本形式存储用户密码等。请研究以下问题:哪一行引发异常?另外,如果你完全遵循教程,那么你应该知道这是一个糟糕的教程。您编写的代码容易受到SQL注入攻击,以纯文本形式存储用户密码等。请研究以下问题:哪一行引发异常?另外,如果你完全遵循教程,那么你应该知道这是一个糟糕的教程。您编写的代码极易受到SQL注入攻击,以纯文本形式存储用户密码等。请研究以下内容: