C# 以编程方式检查MySQL状态是否正确?

C# 以编程方式检查MySQL状态是否正确?,c#,mysql,C#,Mysql,在我的项目中,我想用C#检查MySQL状态语法是否正确,如何做到这一点,MySQL是否有一个API可以让我检查状态语法。 非常感谢。您可以使用来完成此操作。通过抛出错误或不抛出错误,它将告诉您sql语法是否正确,是否受该服务器版本的支持,甚至是否存在相关的表和列,这超出了纯语法验证所能做到的 但是,假设您的注释实际上是在告诉代码是否会(或确实)成功地插入(所有)行,这不会以这种方式工作:仅验证语法不会验证您要插入的数据是否有效。即使语句是正确的,您也可以尝试将字符串或浮点值插入整数列或将字符串列

在我的项目中,我想用C#检查MySQL状态语法是否正确,如何做到这一点,MySQL是否有一个API可以让我检查状态语法。 非常感谢。

您可以使用来完成此操作。通过抛出错误或不抛出错误,它将告诉您sql语法是否正确,是否受该服务器版本的支持,甚至是否存在相关的表和列,这超出了纯语法验证所能做到的

但是,假设您的注释实际上是在告诉代码是否会(或确实)成功地插入(所有)行,这不会以这种方式工作:仅验证语法不会验证您要插入的数据是否有效。即使语句是正确的,您也可以尝试将
字符串
浮点
值插入
整数
列或将
字符串
列相乘。或者您可能违反约束,例如,将
null
插入声明为
非null
的列中,或者违反外键或唯一键约束。它还可以取决于服务器配置;e、 g.可能允许或不允许插入日期
0000-00-00
,无效数据可能会在一台服务器上导致错误,而在另一台服务器上只会导致警告

因此,如果您真的想检查
insert
语句是否插入了行(在这种情况下,通常最好问这个问题,而不是问一个完全不同的问题),您可以简单地使用。它会回来的

受影响的行数

在简单情况下,这将是插入的行数。如果在重复密钥更新中使用触发器或
,则会包括其效果,但通常情况下,您甚至不需要确切的值,只会检查它是否为
>0
。另一方面,不是每个
insert
语句都必须插入行才能正确;e、 g.一个基于某些标准插入缺失行的查询显然做得很好,即使它仅仅因为没有缺失行而没有插入一行

因此,如果您必须执行完全未知的代码,这就是方法:只需执行您想要执行的语句,并处理可能发生的任何错误

尽管通常情况下,您不允许用户输入他想要的任何语句。您可能有一些表单,用户在其中输入数据,然后您可以在执行(准备好的)语句之前验证输入(例如,检查一个整数是否真的是一个整数),或者使用数据感知组件(它们可以自己进行数据库访问和类型验证)。如果发生错误(例如,主键已存在或与服务器的连接丢失),捕获并处理它(例如,显示用户友好的错误消息,如“对不起,您插入的用户已存在”)


如果在执行之前确实需要检查包含数据验证的语句,可以启动事务,使用
ExecuteNonQuery
,回滚并计算结果/错误。但请记住,在不同的时间点,结果可能不一样-测试后,其他人可能已经插入或删除了一行,其中包含您试图插入的主键。

若您想纯粹检查SQL语法,可以尝试此网站。如果您想测试语法是否适用于特定的数据库/查询,您需要创建一个测试数据库/表并使用它进行测试。我使用的是C#,在我的项目中,我需要用C#进行编程检查。那么它可以实现吗?好吧,你可以在这里发布部分/全部mysql,我相信我们可以帮助验证它是否有正确的语法(如果它包含敏感信息,请更改),或者在C#中,你可以使用检查是否有任何错误(您仍然需要运行代码并执行sql一次以检查其是否工作,请先尝试测试语句)。您是否正在创建自己的工作台?是否有其他解决方案,除了try/catch,我正在开发Winform Project。感谢您的回答,您的回答帮助我想出其他不同的想法。非常感谢。