DbCommand 操作 Oracle,MySql的一些坑 电脑版发表于:2021/4/26 15:30 # OracleCommand 和 MySqlCommand 对数据库操作的一些坑 ### 提示不正常字符串结尾的 Oracle 插入语句 #### <font color='red'> Error:ORA-00933: SQL 命令未正确结束 </font> 需要使用begin end Commit 进行批量插入 单次插入一条是可以直接insert 批量才需要使用 begin end commit ### Mysql 无法识别 查询字符串WHERE 条件后的条件 链接字符使用 UTF-8编码 过滤条件带中文字符是无法识别的 对数据库操作会编码where 后的条件 ### Oracle查询占位 Oracle 查询占位符 需要使用: Oracle 插入占位符使用:作为占位符 但是 添加参数的时候 不用添加:直接跟参数名 例: ```C# //查询 string sql = "SELECT * FROM TABLEA WHERE Id=:Id" //添加对应参数 OracleCommand.Parameters.Add(new OracleParameter(":Id",1)) //INSERT 插入 string sql = "INSERT INTO TABLEA(Id,Name) VALUES(:Id,:Name)" OracleCommand.Parameters.Add(new OracleParameter("Id",1)) OracleCommand.Parameters.Add(new OracleParameter("Id","name")) ``` ### <font color='red'> ORA-00911: 无效字符 </font> 检查sql语句末尾的; 分号不被数据库所识别 ### MySql占位符 MySql 占位符在比较新的Dll中 官方建议是统一使用@符号 有一些不支持的还是使用的? 例: ```C# string sql = "select * from TABLE WHERE Id=?Id" MySqlCommand.Parameters.Add(new MySqlParameter("?Id",1)) //或者 string sql = "select * from TABLE WHERE Id=@Id" MySqlCommand.Parameters.Add(new MySqlParameter("@Id",1)) ```