(MySQL)
对于查询语句,单查询结构利用ExecuteScalar()函数,可以减少占用资源。并且返回为一个object对象,可以自动释放。
而函数ExecuteReader()方法,需要创建MySqlDataReader对象,并且使用完之后必须释放资源。
处理带参数的SQL语句
之前做项目,对于带参数的SQL语句,一直利用string.Format()函数,生成需要的SQL语句。
今天发现另一种处理参数的方法,即利用问号(?)和变量名代理,例如:“?var”来代替参数。可以通过Add()方法为参数复制。
com.CommandText = "INSERT INTO table(name1,name2) VALUES(?name1,?name2)";
com.Parameters.Add("?name1",value1);
com.Parameters.Add("?name2",value2);
com.ExecuteNonQuery();
如果需要执行多个SQL语句,那么必须要使用MySqlParameter对象。可以通过Add()函数为SQL语句中参数设置数据类型。然后通过Prepare()方法对SQL语句进行处理,再通过value属性复制。
MySqlParameter p_name1,p_name2;
MySqlCommand com;
com.Connection = conn;
com.CommandText = "INSERT INTO table(name1,name2) VALUES(?name1,?name2)";
p_name1 = Parameters.Add("?name1",type1);
p_name2= Parameters.Add("?name2",type2);
com.Prepare();
p_name1.Value = value1;
p_name2.Value = value2;
com.ExecuteNonQuery();
例程
MySqlParameter p_id,p_stu;
MySqlCommand com;
com.Connection = conn;
com.CommandText = "INSERT INTO table(name1,name2) VALUES(?name1,?name2)";
p_id = Parameters.Add("?id",MySqlDbType.Int32);
p_stu = Parameters.Add("?stu",MySqlDbType.VarChar);
com.Prepare();
p_id.Value = 19;
p_stu.Value = "张三";
com.ExecuteNonQuery();//执行第一条插入语句
p_id.Value = 12;
p_stu.Value = "李四";
com.ExecuteNonQuery();//执行第二条插入语句

本文探讨了在MySQL中使用ExecuteScalar()与ExecuteReader()函数的资源管理优化,以及如何更有效处理带参数的SQL语句,通过问号与变量名代理方法替代传统string.Format()函数,同时介绍了执行多个SQL语句时使用MySqlParameter对象的重要性。

被折叠的 条评论
为什么被折叠?



