c# - 使用C#向数据库中插入数据时出错

标签 c# mysql odbc mariadb

当我尝试在我的数据库中插入一行时,出现以下错误: Error

这是代码:

try
{
    DateTime date = new DateTime(2018, 02, 15, 07, 06, 00);

    using (OdbcConnection con = new OdbcConnection(Properties.Settings.Default.ConnectionString))
    {
        OdbcCommand cmd = new OdbcCommand("INSERT INTO Kassatickets (id, datum, korting, totaal) VALUES 3, '2018-02-15 07:06:00', " + kt.KortingId + ", " + kt.Totaal, con);                 

        con.Open();
        if (cmd.ExecuteNonQuery() == 0)
        {
            throw new Exception("Er zijn geen wijzigingen uitgevoerd!!");
        }
    }
}
catch (Exception e)
{
    throw e;
}

一开始我以为是日期格式的问题,但是当我通过phpmyadmin直接将这一行插入到数据库中时,就没有问题了。

可能这很容易解决,但我找不到问题...

最佳答案

强调参数化查询:

方法一:

using (OdbcConnection con = new OdbcConnection(Properties.Settings.Default.ConnectionString))
{
    var query ="INSERT INTO Kassatickets (id, datum, korting, totaal) VALUES (?, ?, ?, ?)";     

    OdbcCommand cmd = new OdbcCommand(query, con);

    cmd.Parameters.Add("id", OdbcType.UniqueIdentifier).Value = 3;
    cmd.Parameters.Add("datum", OdbcType.VarChar).Value = "2018-02-15 07:06:00";
    cmd.Parameters.Add("korting", OdbcType.VarChar).Value = kt.KortingId;
    cmd.Parameters.Add("totaal", OdbcType.VarChar).Value = kt.Totaal;
    con.Open();
    if (cmd.ExecuteNonQuery() == 0)
    {
        throw new Exception("Er zijn geen wijzigingen uitgevoerd!!");
    }
}

方法二:

using (OdbcConnection con = new OdbcConnection(Properties.Settings.Default.ConnectionString))
{
    var query = "INSERT INTO Kassatickets (id, datum, korting, totaal) VALUES (@id, @datum, @korting, @totaal)";

    OdbcCommand cmd = new OdbcCommand(query, con);
    cmd.Parameters.AddWithValue("@id", 3);
    cmd.Parameters.AddWithValue("@datum", "2018-02-15 07:06:00");
    cmd.Parameters.AddWithValue("@korting", kt.KortingId);
    cmd.Parameters.AddWithValue("@totaal", kt.Totaal);
    con.Open();
    if (cmd.ExecuteNonQuery() == 0)
    {
        throw new Exception("Er zijn geen wijzigingen uitgevoerd!!");
    }
}

关于c# - 使用C#向数据库中插入数据时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48813248/

相关文章:

php - 如何处理包含引号(等)的用户输入?

c# - 如何重置 Selenium 鼠标光标位置?

c# - 通过构建器模式使用异步任务

mysql - 'show table status' 中的数据长度

c# - 使用 SSIS 和 Azure Key Vault 始终加密的 SQL Server

php - 游标状态无效,SQLExecDirect 中的 SQL 状态 24000

c# - 串行任务执行器;这个线程安全吗?

c# - 时间截取(员工夜间工作时间)- VB.net、C#、伪代码

java - 创建数据库语句 - 数据库名称错误

MySQL 聚合查询未按预期运行