(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();//执行第二条插入语句