在我的项目中,我想检查MySQL状态语句是否正确与C#,如何做到这一点,MySQL是否有一个API,可以让我检查状态语法。 非常感谢。检查MySQL状态是否正确或不是以编程方式?
回答
您可以使用prepared statements来执行此操作。通过抛出错误或不抛出错误,它会告诉你SQL语法是否正确,是否支持该确切的服务器版本,即使存在涉及的表和列,这不仅仅是一种纯粹的语法验证。
但是,根据您的评论,您实际上试图告诉您的代码是否(或所有)成功插入(全部)行,并且这不会以这种方式工作:仅验证语法不会验证您的数据是插入是有效的。即使该声明是正确的,您可能会尝试将string
或float
值插入integer
列或乘以string
列。或者你可能违反约束条件,例如将null
插入声明为not null
的列或违反外键或唯一键约束。它也可以取决于服务器配置;例如插入日期0000-00-00
可能被允许或不允许,并且无效的数据可能导致一台服务器发生错误,而另一台服务器只会发出警告。
所以如果你真的想检查一条insert
语句是否插入了行(在这种情况下,询问一下,而不是询问完全不同的问题通常是个好主意),那么你可以简单地使用ExecuteNonQuery
。它将返回
受影响的行数。
在简单情况下,这将是插入行的数量。如果您使用例如触发器或on duplicate key update
,它会包含它们的效果,但通常,您甚至不需要确切的值,并且只会检查它是否为> 0
。另一方面,并非每个insert
语句都必须插入行才能正确;例如一个基于某些标准将插入缺失行的查询显然做得很好,即使它没有插入一行也仅仅是因为没有行丢失。所以如果你必须执行完全未知的代码,这是要走的路:简单地执行你想执行的语句,并处理任何可能发生的错误。
虽然通常您不会允许用户输入他想要的任何声明。你可能有一些用户输入数据的形式,然后你可以在执行(准备好的)语句之前验证输入(例如检查一个整数是否是一个整数)或使用数据感知组件(可能会执行数据库访问和类型验证自己)。如果发生错误(例如,主键已经存在或与服务器的连接丢失),请抓住并处理它(例如,显示用户友好的错误消息,如“对不起,您插入的用户已存在”)。
如果在执行之前确实需要检查包括数据验证的语句,则可以开始一个事务,使用ExecuteNonQuery
,将其回滚并评估结果/错误。但请记住,在不同的时间点结果可能不一样 - 在您测试之后,其他人可能会有使用您要插入的主键插入或删除一行。
谢谢你的回答,你的回答帮助我想出其他不同的想法。非常感谢你。 – wqq
- 1. 如何以编程方式检查Zookeeper是否正在运行
- 2. 以编程方式检查网站是否正常工作?
- 3. 如何以编程方式检查Zookeeper是否正在运行?
- 4. 方案中可以检查列表是否正确或不正确?
- 5. 如何以编程方式检查用户密码是否正确?
- 6. 以编程方式检查文件是否是栅格或矢量(pdf,eps,ai)
- 7. 如何检查iPhone是否以编程方式从睡眠状态移动到活动状态?
- 8. 检查PHP编码是否正确
- 9. 检查MySQL是正确的
- 10. 检查SD卡是否可用或编程方式在Android
- 11. 如何以编程方式确定ehcache是否正在运行?
- 12. 以编程方式确定IIS站点是否正在运行
- 13. 如何以编程方式确定Windows是否正在关机?
- 14. 是否检查零值这种方式是正确的?
- 15. 如何检查格式是否正确
- 16. 是否有可能以编程方式确定视频是否正在播放?
- 17. 检查nummer是否正确
- 18. 以编程方式检查是否部署了jboss中的ear
- 19. 如何以编程方式检查是否安装使用Java
- 20. 以编程方式检查域是否受DNSSEC保护
- 21. 以编程方式检查Oracle AQ队列是否存在
- 22. 如何检查蓝牙是否以编程方式启用?
- 23. 以编程方式检查Windows 7是否已激活
- 24. 检查是否以英文字典编程方式在C#
- 25. 如何以编程方式检查MP4是否损坏?
- 26. 检查用户是否允许以编程方式截断表
- 27. 以编程方式检查在Windows上是否启用了IPv6
- 28. 如何以编程方式检查键盘是否连接?
- 29. 以编程方式检查是否设置密码锁
- 30. 以编程方式检查Windows是否用C++激活
如果你想纯粹检查SQL语法,你可以试试这个网站[MySQL Syntax Check](https://www.piliapp.com/mysql-syntax-check/)。如果要测试语法是否适用于特定的数据库/查询,则需要创建一个测试数据库/表并使用它进行测试。 –
我正在使用C#,在我的项目中,我需要用C#编程检查它。它是如何实施的? – wqq
那么,你可以在这里发布部分/全部的mysql,我相信我们可以帮助验证它是否有正确的语法(如果它包含敏感信息,请更改它),或者在C#中,可以使用[try/catch ](https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/try-catch)来检查是否有任何错误(您仍然需要运行代码并执行sql一次检查它是否有效,首先尝试测试语句)。 –