关于sqlite 传参,该怎么处理
关于sqlite 传参
string sql = "SELECT .... FROM.....WHERE......IN ('1','3')";
SQLiteParameter[] para = new SQLiteParameter[]
{
new SQLiteParameter("@GROUP_ID", GROUP_ID),
};
('1','3') 这样的数据用SQLiteParameter 这样传参 怎么能传进去
"SELECT 。。。 FROM 。。。。WHERE 。。。。LIKE '%abc%'
'%abc%' 这样的怎么传?
------解决方案--------------------
这种%abc%参数没办法传。只能想办法直接通过程序生成SQL语句。
------解决方案--------------------
只能用字符串累加生成SQL语句再执行
------解决方案--------------------
实际上是有办法的。
1. 对IN子句:
sql = "select * from " + _t1 + " where id in (?, ?, ?)";
cmd.Parameters.AddWithValue("", 1);
cmd.Parameters.AddWithValue("", 2);
cmd.Parameters.AddWithValue("", 3);
有几个值就使用几个问号进行绑定
2. 对like子句
sql = "select * from " + _t1 + " where col3 like @col3";
cmd.Parameters.AddWithValue("@col3", "%abc%");
这样也能进行绑定。
SQLite的adonet实现还是蛮不错的。
string sql = "SELECT .... FROM.....WHERE......IN ('1','3')";
SQLiteParameter[] para = new SQLiteParameter[]
{
new SQLiteParameter("@GROUP_ID", GROUP_ID),
};
('1','3') 这样的数据用SQLiteParameter 这样传参 怎么能传进去
"SELECT 。。。 FROM 。。。。WHERE 。。。。LIKE '%abc%'
'%abc%' 这样的怎么传?
------解决方案--------------------
这种%abc%参数没办法传。只能想办法直接通过程序生成SQL语句。
------解决方案--------------------
只能用字符串累加生成SQL语句再执行
------解决方案--------------------
实际上是有办法的。
1. 对IN子句:
sql = "select * from " + _t1 + " where id in (?, ?, ?)";
cmd.Parameters.AddWithValue("", 1);
cmd.Parameters.AddWithValue("", 2);
cmd.Parameters.AddWithValue("", 3);
有几个值就使用几个问号进行绑定
2. 对like子句
sql = "select * from " + _t1 + " where col3 like @col3";
cmd.Parameters.AddWithValue("@col3", "%abc%");
这样也能进行绑定。
SQLite的adonet实现还是蛮不错的。