【问题标题】:Unhandled Format Exception with string未处理的字符串格式异常
【发布时间】:2016-09-19 17:22:39
【问题描述】:

以下代码用于更新数据库中的值,

          string updateCom = ("UPDATE Login SET Username = '" + textUsername.Text + "', Password = '" + textPassword.Text + "', Role = '" + comboBox1.Text + "', First_Name = '" + char.Parse(textFirstName.Text) + "', Last_Name = '" + char.Parse(textLastName.Text) + "', Age = " + int.Parse(textAge.Text) + "', Gender = " + char.Parse(textAge.Text) + " WHERE User_ID = " + textUser_ID.Text);

整个事情都包含在一个 try catch 方法中,并且在调试时我得到了

“FormatException 未处理”

,它还表示字符串必须恰好是一个字符长。这个未处理的异常仅在我输入“John Harambe”作为名字时发生。谁能告诉我正确的格式?

我的问题的解决方案:

所以我按照其中一位评论者的建议使用了参数化查询,这是我目前的代码;

       updateCom = new SqlCommand("UPDATE Login"
            + "SET Username = @username,"
            + "Password = @password,"
            + "Role = @role,"
            + "First_Name = @firstName,"
            + "Last_Name = @lastName,"
            + "Age = @age,"
            + "Gender = @gender"
            + "WHERE User_ID = @user_ID");

        updateCom.Connection = searchCon;
        searchCon.Open();

        String Username = textUsername.Text;
        String Password = textPassword.Text;
        String Role = comboBox1.Text;
        String First_Name = textFirstName.Text;
        String Last_Name = textLastName.Text;
        String Age = textAge.Text;
        String Gender = textGender.Text;

        if (searchCon.State == ConnectionState.Open)
        {
            updateCom.Parameters.AddWithValue("@username", Username);
            updateCom.Parameters.AddWithValue("@password", Password);
            updateCom.Parameters.AddWithValue("@role", Role);
            updateCom.Parameters.AddWithValue("@firstName", First_Name);
            updateCom.Parameters.AddWithValue("@lastName", Last_Name);
            updateCom.Parameters.AddWithValue("@age", Age);
            updateCom.Parameters.AddWithValue("@gender", Gender);

            try
            {
                updateCom.ExecuteNonQuery();
                if (MessageBox.Show("Data UPDATED.", "Admin Power",
                    MessageBoxButtons.OK, MessageBoxIcon.Information) == DialogResult.OK)
                {
                    searchCon.Close();
                }
                else
                {
                    if(MessageBox.Show("Data NOT UPDATED", "Admin Power",
                        MessageBoxButtons.OK, MessageBoxIcon.Information) == DialogResult.OK)
                    {
                        return;
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                searchCon.Close();
            }
        }

它仍然会抛出未处理的异常

“'用户名'附近的错误语法。”

【问题讨论】:

标签: c# string


【解决方案1】:

错误,char.parse 需要一个字符的字符串。

char.Parse

所以,当然,如果您的名字或姓氏字符串较长,您将获得该异常...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 2023-01-27
    • 1970-01-01
    • 1970-01-01
    • 2011-01-01
    相关资源
    最近更新 更多