【问题标题】:Sending textbox value to sql database将文本框值发送到 sql 数据库
【发布时间】:2016-09-16 17:05:23
【问题描述】:

有一个名为 tbTodo 的文本框,它从数据库中获取信息:

SELECT `todo` FROM `user` WHERE `username` LIKE '" + _naam + "'";

有效。现在的问题是,我不知道如何更新数据库中的待办事项列表:如何发送文本框值并覆盖数据库中的值。到目前为止我的代码(这可能是完全错误的):

db_connection();
        MySqlCommand cmdRead = new MySqlCommand();
        cmdRead.CommandText = "SELECT `todo` FROM `user` WHERE `username` LIKE '" + _naam + "'";
        cmdRead.Connection = connect;
        MySqlDataReader tdOphalen = cmdRead.ExecuteReader();
        if (tdOphalen.Read())
        {
            tbTodo.Text = tdOphalen.GetString(0);
            connect.Close();
            return true;
        }
        else
        {
            connect.Close();
            return false;
        }
    }

【问题讨论】:

  • 好吧,如果你想更新数据库,那么你需要使用UPDATE 命令而不是SELECT 命令...
  • 请查一下Command.Parameters.AddWithValue();
  • 首先:不要使用这样的 SQL 查询字符串,除非您希望人们执行 SQL injection 并损害您的数据库;使用prepared statement。其次,您要在数据库中更新什么?我知道这是一个待办事项列表,但您要更新哪些列以及包含哪些信息?
  • @Bwolfing 目前,它只是一个文本框,用于个人项目。我不知道你准备好的陈述是什么意思。我是 sql 新手。对不起,我缺乏知识,但你能解释一下我应该怎么做吗?
  • 看看@Filburt 的 SQL 注入、prepared statement 和 Exploits of a Mom 链接,首先了解查询的危险:)

标签: c# mysql sql winforms


【解决方案1】:

UPDATE 命令的语法是

UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;

在你的情况下,它会像

"UPDATE `user` set `todo` = '" + tbTodo.Text + "' FROM `user` WHERE `username` LIKE '" + _naam + "'";

第一次尝试并了解如何更新数据库上的值应该很好。

接下来的步骤是学习如何使用prepared statement ;)

【讨论】:

  • 有点用?我猜?所以我在我的代码中复制了你的代码,我在行出现错误: MySqlDataReader tdOphalen = cmdRead.ExecuteReader();其中说:附加信息:您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 1 行的 'FROM user WHERE username LIKE ''' 附近使用正确的语法 想法如何解决?顺便说一句,对不起我缺乏知识,因为我是新人
  • 您正在使用ExecuteReader,它允许只读操作。请改用ExecuteNonQuery
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-29
  • 2020-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-27
相关资源
最近更新 更多