将参数从文本框传递到sql语句字符串-单引号(')杀死了我

01

在将文本添加到cpr_txtbx,name_txtbx和address_txtbx之后,我将它们转换为要在我的语句字符串中使用的参数。我正在使用的MySQL服务器需要以下语法:“ INSERT INTO people(type,cpr,name,address)” VALUES('cpr','name','address')“(是,单引号),我弄乱我的头发,试图弄清楚这里的语法。

我的按钮现在看起来像这样(我知道这是错误的):

        private void add_btn_Click(object sender, RoutedEventArgs e)
    {
        string statement = "INSERT INTO people (type, cpr, name, address)" +
            "VALUES('citizen', ':cpr', ':name', ':address')";
        this.AUD(statement, 0);
        add_btn.IsEnabled = false;
        edit_btn.IsEnabled = true;
        delete_btn.IsEnabled = true;
    }

澳元为:

        private void AUD(string statement, int state)
    {
        string msg = "";
        MySqlCommand cmd = conn.CreateCommand();
        cmd.CommandText = statement;
        cmd.CommandType = CommandType.Text;

        switch (state)
        {
            case 0:
                msg = "Borger tilføjet.";
                cmd.Parameters.Add("cpr", MySqlDbType.Text, 10).Value = cpr_txtbx.Text;
                cmd.Parameters.Add("name", MySqlDbType.Text).Value = name_txtbx.Text;
                cmd.Parameters.Add("address", MySqlDbType.Text).Value = address_txtbx.Text;
                break;
            case 1:
                msg = "Borger modificeret.";
                cmd.Parameters.Add("address", MySqlDbType.Text).Value = address_txtbx.Text;
                break;
            case 2:
                msg = "Borger slettet.";
                cmd.Parameters.Add("cpr", MySqlDbType.Text, 10).Value = cpr_txtbx.Text;
                break;
        }
        try
        {
            int n = cmd.ExecuteNonQuery();
            if ( n > 0 )
            {
                MessageBox.Show(msg);
                this.updateDataGrid();
            }
        }
        catch(MySqlException ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }

我正在关注的教程在这里:https : //www.youtube.com/watch?v=NiGsgctfiYM

这是我无法上班的唯一事情,因此,非常感谢您的帮助:)

比尔·卡温

不要将参数占位符放在SQL字符串定界符内。

错误:

string statement = "INSERT INTO people (type, cpr, name, address)" +
        "VALUES('citizen', ':cpr', ':name', ':address')";

对:

string statement = "INSERT INTO people (type, cpr, name, address)" +
        "VALUES('citizen', :cpr, :name, :address)";

发表您的评论:

我再次看了您正在使用的视频教程,并且看到它显示了Oracle语法。请记住,尽管使用标准SQL语言,但是每个SQL数据库品牌都有其自己的语法。因此,您应该使用所使用品牌的文档和教程。

我不是C#开发人员,所以起初我没有注意到MySQL中查询参数的语法不同于Oracle。

https://dev.mysql.com/doc/connector-net/zh-CN/connector-net-programming-prepared-preparing.html显示了一个示例,该示例@以参数代替:因此,我假设您可以使用以下语法来修复代码:

string statement = "INSERT INTO people (type, cpr, name, address)" +
        "VALUES('citizen', @cpr, @name, @address)";

然后稍后添加值:

cmd.Parameters.AddWithValue("@cpr", cpr_txtbx.Text);
cmd.Parameters.AddWithValue("@name", name_txtbx.Text);
cmd.Parameters.AddWithValue("@address", address_txtbx.Text);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我想在字符串中嵌入单引号

来自分类Dev

当我在PHP for SQL Management Studio中使用单引号时如何添加单引号

来自分类Dev

用单引号转义字符串的单引号

来自分类Dev

为什么Rubymine建议我在字符串上使用单引号而不是双引号?

来自分类Dev

SQL字符串中的单引号

来自分类Dev

SQL 选择语句,其中我要查找的文本带有单引号

来自分类Dev

在双引号或单引号之间匹配文本

来自分类Dev

尝试将单引号放入单引号postgresql php中

来自分类Dev

将双引号替换为单引号?

来自分类Dev

将字符串双引号转换为单引号

来自分类Dev

不带单引号的SQL注入

来自分类Dev

在SQL中插入单引号

来自分类Dev

sql存储过程单引号

来自分类Dev

不带单引号的SQL注入

来自分类Dev

单引号字符串提取

来自分类Dev

获取单引号内的字符串

来自分类Dev

替换字符串中的单引号

来自分类Dev

在包含单引号和双引号的字符串中转义单引号

来自分类Dev

解析带引号的单引号之间的大字符串

来自分类Dev

用字符串内的双引号替换单引号

来自分类Dev

获取单引号或双引号之间的字符串

来自分类Dev

替换字符串中的单引号和双引号

来自分类Dev

字符串中的单引号和双引号的grep

来自分类Dev

双引号和单引号内的Grep字符串

来自分类Dev

保存包含单引号和双引号的字符串?

来自分类Dev

如何从字符串中删除单引号或双引号?

来自分类Dev

多行,双引号字符串将触发后续的单引号命令的历史扩展,该命令将通过管道传递到该单引号

来自分类Dev

参数带有单引号的EXEC语句

来自分类Dev

传递参数以单引号起作用