时间:2021-07-01 10:21:17 帮助过:45人阅读
con.Open();//打开连接
MySqlCommand cmd = new MySqlCommand(“select now()”,con);
object time = cmd.ExecuteScalar(); //或是 cmd.ExecuteReader();cmd.ExecuteNonQuery();
MessageBox.Show(time.ToString());
//或 Console.WriteLine(time.ToString());
con.Close();
上面的连接字符串应该好理解,另外还有更多的配置参数,例如端口号、连接池相关的配置等,具体请参考手册中的 Connection Options。其他的操作就是标准的 ADO.NET 的了,再就是可以处理各步骤的异常,catch MySql.Data.MySqlClient.MySqlException 这个类型的异常。其他的用于填充数据的 MySqlDataAdapter 和 MySqlDataReader 也是备好了的。
我想,在做正式的应用时,为防止 SQL 注入时关于参数化查询肯定会被提出来的,那就来看看这个 MySQL 官方驱动如何处理参数化查询的。它所用的方式和 SqlServer Provider 是一样的,用 @author 这样的形式来标识参数,并且同样支持 AddWithValue(string name, object value) 的方式。请看代码:
代码如下:
//可以用 ? 号的形式,如,但 ? 号的形式不推荐使用
//string sql = “update wp_posts set post_author=?author and post_status=?status where id=?id”;
MySqlCommand cmd = con.CreateCommand();
cmd.CommandText = sql;
cmd.Parameters.AddWithValue(“@author”, 1);
//cmd.Parameters.AddWithValue(“?author”, 1);
cmd.Parameters.AddWithValue(“@status”, “publish”);
//cmd.Parameters.AddWithValue(“?status”, “publish”);
cmd.Parameters.AddWithValue(“@id”, 23);
//cmd.Parameters.AddWithValue(“?id”,23);
cmd.ExecuteNonQuery();
注意到,同时还能用 ?author 的形式来标识参数,不过现在不推荐这么用了,也许是为了统一成 @author 的格式吧。不知道什么时候能像 JDBC 一样,直接用 ? 来作为占位符。
对于 InnoDB 存储引擎的 MySQL 是支持事物的,这个官方的的驱动支持事物的代码如下:
MySqlTransaction trans = con.BeginTransaction(); //启用事物
trans.Commit(); //正常时提交
trans.Rollback(); //异常时回滚
下一篇将介绍如何使用 SourceForge 上的开源 MySQL .Net 驱动怎么去操作 MySQL 数据库的。
C#连接操作 MySQL 数据库实例(使用官方驱动)
标签:连接 ima 标准 理解 variant nsa ada oca ndt