我一直都是对sql数据库进行参数化查询,今天突然对于access进行查询,才发现原来不是用那种方法,我查了一下,都是使用?,例如 sql="select * from newss where username=? order by id"
//注意查询的条件均用?号表示
OleDbConnection conn = new OleDbConnection(connString);
OleDbCommand cmd = new OleDbCommand(sql,conn);
OleDbParameter parm = new OleDbParameter("temp",OleDbType.VarChar, 50);
//temp为Parameter对象可随便定义,OleDbType.VarChar指定为字符串,长度50
parm.Direction = ParameterDirection.Input;
//指定其类型输入参数
cmd.Parameters.Add(parm);但是对于这个查询,我有一些疑问,如果有多个参数怎么办呢?他们都是问号,这样根本无法识别那个参数是对应哪个啊?
例如sql="select * from newss where username=? and id=? order by id"
这个我们该怎么办呢?我在网上搜了一下,所有的解答都是复制一篇博客的
//注意查询的条件均用?号表示
OleDbConnection conn = new OleDbConnection(connString);
OleDbCommand cmd = new OleDbCommand(sql,conn);
OleDbParameter parm = new OleDbParameter("temp",OleDbType.VarChar, 50);
//temp为Parameter对象可随便定义,OleDbType.VarChar指定为字符串,长度50
parm.Direction = ParameterDirection.Input;
//指定其类型输入参数
cmd.Parameters.Add(parm);但是对于这个查询,我有一些疑问,如果有多个参数怎么办呢?他们都是问号,这样根本无法识别那个参数是对应哪个啊?
例如sql="select * from newss where username=? and id=? order by id"
这个我们该怎么办呢?我在网上搜了一下,所有的解答都是复制一篇博客的
cmd.Parameters.AddWithValue("?",TextBoxUserName.Text.Trim());//给username指定参数
cmd.Parameters.AddWithValue("?",Request["id"].Trim());//给id指定参数
string query = "select * from News where ID= ?";
OdbcHelper helper = new OdbcHelper();
System.Data.OleDb.OleDbParameter para = new System.Data.OleDb.OleDbParameter("?",id);
System.Data.OleDb.OleDbParameter[] parameters ={para};
//自定义的方法
System.Data.DataSet data= helper.ExcuteQuery(query,parameters);
/// 执行查询,并且返回dataset对象
/// </summary>
/// <param name="query"></param>
/// <param name="con"></param>
/// <param name="parameter">查询字符串的参数数组</param>
/// <returns></returns>
public DataSet ExcuteQuery(string query, OleDbParameter []parameters)
{
DataSet data = null;
using (OleDbConnection con = ConOpen(conStr))
{
using (OleDbCommand cmd = new OleDbCommand(query, con))
{
con.Open();
//像查询语句添加参数
foreach (OleDbParameter parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
//OdbcDataReader reader= cmd.ExecuteReader();
using (OleDbDataAdapter adapter = new OleDbDataAdapter(cmd))
{
try
{
adapter.Fill(data);
}
catch
{
return null;
}
}
}
}
return data;
}
query="select * from newss where username=@username and id=@id order by id"
OleDbCommand cmd = new OleDbCommand(query, con)
cmd.Parameters.AddWithValue("@username","xx")
cmd.Parameters.AddWithValue("@id","yy")改成问号也是可以的,但此时要注意顺序
query="select * from newss where username=? and id=? order by id"
OleDbCommand cmd = new OleDbCommand(query, con)
cmd.Parameters.AddWithValue("username","xx")
cmd.Parameters.AddWithValue("id","yy")
http://blog.csdn.net/limengqilove/article/details/7660559