以前一直是这样用:
CString sql;
sql.format(_T"SELECT * FROM TABLE WHERE COL1 = '%s' AND COL2 = '%s'",m_a,m_b);
如果语句很长,条件很多,里面就会有很多'%s',后面出现很多m_a,m_b,要数到第几个%s了,写着写着头都大了。
最近发现(或者叫发明,我是没看到别人用,呵呵)一种简便方法。
sql.format(_T"
DECLARE @col1 varchar(20)
DECLARE @col2 varchar(20)
SET @col1 = '%s'
SET @col2 = '%s'
SELECT * FROM TABLE WHERE COL1 = @col1 AND COL2 = @col2
",m_a,m_b);
就是把在SQL语句里面定义变量,这样就可以每个变量不管用多少次,只赋值一次就好了,而且顺序很清楚,改的时候也方便。