如果c#中不存在,如何更改?

如果c#中不存在,如何更改?,c#,mysql,C#,Mysql,我在.NET Core 3.1中有一个API,它将一些数据插入到我的数据库中,问题是我必须在插入数据的列中添加一个新列,因为该API被称为“我动态连接到我应该插入的数据库”,如果该列不存在,我如何创建一个可更改的,然后插入新项 下面是我插入内容的方法: public static IActionResult InsertOrder(string piva, string idNegozio, RiepilogoTakeaway ordine, HttpResponse Response) {

我在.NET Core 3.1中有一个API,它将一些数据插入到我的数据库中,问题是我必须在插入数据的列中添加一个新列,因为该API被称为“我动态连接到我应该插入的数据库”,如果该列不存在,我如何创建一个可更改的,然后插入新项

下面是我插入内容的方法:

public static IActionResult InsertOrder(string piva, string idNegozio, RiepilogoTakeaway ordine, HttpResponse Response) {
            string connectionString = getConnectionString(piva);
            var query_ordine = @"INSERT INTO `ordini` (`TIPO_OR`, `TAVOLO_OR`, `ORA_OR`, `SENT_OR`, `ID_OR_CFG`, `LOTTERIA_OR`) VALUES (@tipo, @tavolo, NOW(), 0, @id, @lotteria); SELECT LAST_INSERT_ID();";

            using var connection = new MySqlConnection(connectionString);
            using var cmd = new MySqlCommand(query_ordine, connection);
            cmd.Parameters.AddWithValue("@tipo", "STB");
            cmd.Parameters.AddWithValue("@tavolo", 0);
            cmd.Parameters.AddWithValue("@id", idNegozio);
            cmd.Parameters.AddWithValue("@lotteria", ordine.lotteria);
            connection.Open();
            cmd.Prepare();

            string idOrdine = cmd.ExecuteScalar().ToString();

            ...
}
这就是我应该执行的alter table:

ALTER TABLE `ordini`
ADD COLUMN `LOTTERIA_OT` VARCHAR(10) NULL AFTER `ID_OR_CFG`;

哪种方法最好?

在调用SQL更改之前,请尝试部署SQL更改。很可能需要数据库中更高级别的权限才能运行alter或add列,例如,如果用于插入订单的SQL用户没有更改DB架构的权限。 但是,如果这仍然是一个选项,则需要使用命令.ExecuteNonQuery()执行SQL架构更改。 可能值得创建一个新方法“PrepareSqlTable”,以便您可以在查询运行之前调用它。请记住,这将影响应用程序的性能/可伸缩性,因为现在我们将在每个查询中检查这一点。
另一种选择是,通过查看错误消息并相应地创建它来处理此问题(提供了比上一个选项更多的性能优势)。

您好,根据语言,我可能遗漏了一些东西,但我不明白为什么需要在C#运行时上添加列。没有其他方法了吗?@stickybit
AddWithValue
对MySQL很好:@BradleyGrainger:Oops,错过了MySQL标签。谢谢你的指点。删除了评论。