【问题标题】:cannot convert .text to int in SQL method [duplicate]无法在 SQL 方法中将 .text 转换为 int [重复]
【发布时间】:2022-11-17 12:49:42
【问题描述】:

我尝试了所有可以将 .text 转换为 int 的方法,但我遇到了这样的错误。

我的代码

private void button1_Click(object sender, EventArgs e)
        {
            SqlConnection con1 = new SqlConnection("Data Source=localhost\\SQLEXPRESS;Initial Catalog=libralyServer;Integrated Security=True");
            con1.Open();             
            SqlCommand cmd1 = new SqlCommand("insert into bookData values(@bookName,@bookWriter,@bookTotel)", con1);
            cmd1.Parameters.AddWithValue("@bookName", textBox1.Text);
            cmd1.Parameters.AddWithValue("@bookWriter", textBox2.Text);
            cmd1.Parameters.AddWithValue("@bookTotel",int.Parse(textBox2.Text));//have error
            cmd1.ExecuteNonQuery();
            con1.Close();
        }

如何解决?我尝试在互联网上搜索许多方法,但我仍然无法修复此错误。

【问题讨论】:

  • 没有图,求文字

标签: c# database


【解决方案1】:

在您的屏幕截图中,textbox2.Text 等于“s”。这不是 int.Parse() 能够变成整数的东西,因此会抛出异常。

您可以使用 int.TryParse() 尝试解析字符串值,如果失败,则执行其他操作。

【讨论】:

    【解决方案2】:

    从异常消息中可以很清楚地看出textBox2.Text 不是有效的整数值,您必须首先检查它的值是否为 int。你可以使用int.TryParse方法。如果字符串不可转换为整数值,则返回 false

    这是官方文档。

    这里有几点需要注意。

    请不要直接在 C# 文件中定义连接字符串。你可以在配置文件中定义它。

    请在连接和命令中使用using语句。

    您还可以利用 ExeceuteNonQuery 方法的返回值。

    https://learn.microsoft.com/en-us/dotnet/api/system.int32.tryparse?view=net-7.0

    【讨论】:

    • 为什么要探索 SQL 注入?
    • @ProgrammingLlama 如果尚未实现,则只实现数据验证
    • 我的意思是...... OP 的代码已经可以避免 SQL 注入。我不明白你为什么建议探索它作为他们当前问题的解决方案......
    • @ProgrammingLlama 让我删除那一点,这只是一个建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多