c# - 获取行的ID c# Mysql

标签 c# mysql database dbclient

我正在将我的 Mysql 数据库客户端更改为 mysql.data.dll 之一 来自 System.data.sqlclient。

但在使用 sqlclient 之前,我可以这样做吗:

 public long insertQuery()
    {
        long lastInsertedId = 0L;
        try
        {
            lastInsertedId = (long)command.ExecuteScalar();
        }
        catch (Exception exception)
        {
            Exeption.WriteMySQLError(exception.ToString());
        }
        return lastInsertedId;
    }
dbClient.setQuery("INSERT INTO items (base_item, user_id) VALUES (" + BaseItem + ", " + UserId + ")");
                    Id = (uint)dbClient.insertQuery();

然后我得到了我刚刚插入的itemId 但使用相同的代码和来自 MySql.Data.MySqlClient.MySqlCommand 的 ExecuteScalar() 我得到一个空异常(exception)吗? 那么这如何与 MySqlCommand 一起工作呢?

命令来自于:

        private MySql.Data.MySqlClient.MySqlCommand Command;

多亏了史蒂夫修复了它,这里是固定代码。

   public long insertQuery()
        {
            Command.CommandText += "; SELECT LAST_INSERT_ID()";
            long lastInsertedId = 0L;
            try
            {
                lastInsertedId = Convert.ToInt32(Command.ExecuteScalar().ToString());
            }
            catch (Exception exception)
            {
                Console.WriteLine("Nou er is een error in insertquery! :" + exception.ToString());
            }   
            return lastInsertedId;
        }

最佳答案

MySql 使用函数LAST_INSERT_ID 返回最后插入的id

所以你的命令文本应该改成这样

 dbClient.setQuery(@"INSERT INTO items (base_item, user_id) VALUES (....);
                     SELECT LAST_INSERT_ID()");
 Id = (uint)dbClient.insertQuery();

但是您的代码存在一个称为 SQL 注入(inject)的严重问题。传递一个由其他字符串拼接而成的字符串会使您的代码暴露于一个非常容易使用的安全漏洞。

了解 SQL Injection以及如何使用 Parameterized query
SQL Injection short story

关于c# - 获取行的ID c# Mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25169102/

相关文章:

c# - 绘制圆后如何将其视为控件? - 移动和选择形状

c# - 尝试/捕捉性能

javascript - 提交表单时,如何检查用户的电子邮件是否已在我的数据库中?

MySQL数据库运行在内存中以加速查询的执行

c# - Entity Framework ,获取选中项的周边项

c# - 序列化用内部修饰符声明的类的列表<>?

php - 为什么使用 MySQL 转储插入到数据库中的挪威字符会损坏?

php - 将 JSON 中的值插入数据库

c# - Access c# 数据库 OleDbException

database - 优化 Redshift 查询的大 IN 条件