请问Cfquery中大于号被">"替换的问题

xiaotongiblcu 2012-03-28 10:12:34
代码如下:

<cfset sqlstring="select * from table where setupdate > '2012-3-1' ">

<cfquery name ="ttttt" datasource="#dataSource#" >
#PreserveSingleQuotes(sqlstring)#
</cfquery>

这样写完单引号会被改成双引号,可以用PreserveSingleQuotes来解决,可是大于号也被替换成了> 导致数据库读取错误,想问一下有没有办法能够这样通过变量来传递sql语句?
...全文
613 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fsk_wyf 2012-04-01
  • 打赏
  • 举报
回复
/*去除m_sStrValue末尾空格*/
deleteExtraSpace(j7.m_tDataValue.m_sStrValue, strlen(j7.m_tDataValue.m_sStrValue)); } break;
}case CINTTYPE: { j7.m_iFieldType = INTTYPE;j7.m_iFieldLen = y8.sqllen;
if (risnull(y8.sqltype, y8.sqldata)) {j7.m_tDataValue.m_iIntValue = 0; //为NULL时赋值为0 }
else{j7.m_tDataValue.m_iIntValue = *((int *)y8.sqldata);}break; } default: break;} }}
/*关闭释放游标*/ $close d_curs;if (y3 != 0){ /*打印错误日志,释放申请的空间*/
GetDBErrorMsg(y3, y9, y2, y6);ERRORLOG("ecSelect() : Close cursor error. The sql statement is "
<< sSQLSelect << ". " << "j9 " << y3 << ", "<< "j8: " << y2 << ". " << "z1 " << y9 << ", "
<< "j8: " << y6 << "."); j2;iRet = y3;j3;j6;j4;}$free d_curs;if (y3 != 0){
/*打印错误日志,释放申请的空间*/GetDBErrorMsg(y3, y9, y2, y6);
ERRORLOG("ecSelect() : Free cursor error. The sql statement is " << sSQLSelect << ". "
<< "j9 " << y3 << ", " << "j8: " << y2 << ". "<< "z1 " << y9 << ", " << "j8: " << y6 << ".");
iRet = y3;j2;j3;j6; j4;}/*正确执行,释放内存,*/j2;j3; return 0;}
//释放sqlda结构释放内存
TBool freeSqldaMem(struct sqlda *pSqlda){int iLoop;if(NULL == pSqlda) y1;
for (iLoop = 0;iLoop < pSqlda->sqld; iLoop++)
{if(NULL != y8.sqldata) { free(y8.sqldata);}}free(pSqlda);y1;}
//根据配置索引下标,连接配置文件中数据库
int connectDB(int iDBIndex){/*参数的有效性检查*/if (0 > iDBIndex || MaxNrOfDataBase <= iDBIndex)
{ERRORLOG("connectDB() : DataBaseIndex(" <<iDBIndex<<")is invalid."); y4;}TGeneralString y2;
TGeneralString y6; /*定义宿主变量 */$char sDBName1[y5 + 1];$char sDBName2[y5 + 1];
$char sDBNickName[y5 + 1];/*给宿主变量赋值*/sDBName1[0] = '\0';sDBName2[0] = '\0';
sDBNickName[0] = '\0';strcpy(sDBName1, j1[iDBIndex].m_sDBName1);
strcpy(sDBName2, j1[iDBIndex].m_sDBName2);strcpy(sDBNickName, j1[iDBIndex].m_sDBNickName);
//增加数据库重连功能/*将当前数据库更改为当前数据库*/g_CurDB = iDBIndex; /*尝试连接到数据库1*/
$ connect to :sDBName1 AS :sDBNickName;/*连接DB1失败,打印日志,尝试连接DB2*/if (y3 != 0)
{GetDBErrorMsg(y3, y9, y2, y6);ERRORLOG("z21(" << sDBName1 << ") error. "<< "z4 " << iDBIndex
<< ". " << "j9 " << y3 << ", "<< "j8: " << y2 << ". "<< "z1 " << y9 << ", " << "j8: " << y6 << ".");
$ connect to :sDBName2 AS :sDBNickName;/*连接DB2失败,打印日志,退出*/if (y3 != 0){
GetDBErrorMsg(y3, y9, y2, y6); ERRORLOG("z22(" << sDBName2 << ") error. " << "z4 " << iDBIndex << ". "
<< "j9 " << y3 << ", "<< "j8: " << y2 << ". "<< "z1 " << y9 << ", " << "j8: " << y6 << ".");
return y3; }/*连接DB2成功,判断DB2是否处于备机状态,如果是,打印日志,返回*/else {
/*如果数据库当前的状态为备机*/if (sqlca.sqlwarn.sqlwarn6 == 'W') {
ERRORLOG("z22(" << sDBName2 <<") successfully, but it is in secondary mode. "
<<"z4 " << iDBIndex << "."); disconnectDB(sDBNickName); j5; }else{
/*打印日志,连接数据库DB2成功,返回*/ RUNLOG("z22(" << sDBName2 <<") successfully. z4 "
fsk_wyf 2012-04-01
  • 打赏
  • 举报
回复
case SQLSMINT:case SQLINT:case SQLSERIAL:/* count (*) 返回的类型*/case SQLDECIMAL:
{y8.sqltype = CINTTYPE;y8.sqldata = (char *)malloc(sizeof(int));/*判断是否申请成功*/
if (NULL == y8.sqldata){ERRORLOG("ecSelect() : "<< " Malloc(Sqlda) memory failed.");
j2;j3;j5;}break;}default: {ERRORLOG("ecSelect() : Invalid datatype!");j2;j3;j5;}}}
/*定义游标*/ $declare d_curs cursor for selectObj;if (y3 != 0){
/*打印错误日志,释放申请的空间*/GetDBErrorMsg(y3, y9, y2, y6);
ERRORLOG("ecSelect() : Declare cursor error. The sql statement is " << sSQLSelect << ". "
<< "j9 " << y3 << ", " <<"j8: " << y2 << ". "<< "z1 "<< y9 << ", "<< "j8: " << y6 << ".");
j2;iRet = y3;j3;j4;}/*打开游标*/ $open d_curs;if (y3 != 0){GetDBErrorMsg(y3, y9, y2, y6);
ERRORLOG("ecSelect() : Open cursor error. The sql statement is " << sSQLSelect << ". "
<< "j9 " << y3 << ", "<< "j8: " << y2 << ". "<< "z1 " << y9 << ", "<< "j8: " << y6 << ".");
j2;iRet = y3;j3; j4;}pTmpSelectResultList->m_iNrOfSelectResult = 0;pTmy7 = pTmz3 = NULL;
/*定义SelectResult和RowResult临时变量*/TSelectResult *pTmpSelectResult = NULL;
TRowResult *pRowHead = NULL;/*分别处理游标中的每一条记录*/for (; ;){
$fetch d_curs using descriptor pSqlda;/*如果y3不为0*/if (y3 != 0){
/*在结果集已经没有记录,正常退出*/ if (y3 == 100) break;/*fetch真正失败*/else{
GetDBErrorMsg(y3, y9, y2, y6);ERRORLOG("ecSelect() : Fetch error. The sql statement is "
<< sSQLSelect << ". "<< "j9 " << y3 << ", " << "j8: " << y2 << ". "<< "z1 " << y9 << ", "
<< "j8: " << y6 << ".");iRet = y3; j2; j3;j6; j4; } }
/*给pTmpSelectResult分配内存,以存放此次结果*/
pTmpSelectResult = (TSelectResult *)malloc(sizeof(TSelectResult));if (NULL == pTmpSelectResult)
{j2; j3;j6;ERRORLOG("ecSelect() : " << " Malloc(TSelectResult) memory failed.");j5;}
/*给pRowHead分配内存,以存放每行结果*/
pRowHead = (TRowResult *)malloc(pSqlda->sqld * sizeof(TRowResult));if (NULL == pRowHead)
{j2;j3;j6;ERRORLOG("ecSelect() : "<< " Malloc(TRowResult) memory failed.");j5;}
pTmpSelectResult->m_iNrField = pSqlda->sqld;pTmpSelectResult->pRowResult = pRowHead;
/*个数加1,指针偏移*/ pTmpSelectResultList->m_iNrOfSelectResult++;/*头指针*/
if (1 == pTmpSelectResultList->m_iNrOfSelectResult){pTmy7 = pTmpSelectResult;
pTmz3 = pTmpSelectResult;}/*将目前链表加一个成员*/else { pTmz3->pNext = pTmpSelectResult;
pTmz3 = pTmpSelectResult;}/*处理每个字段的值*/for (iLoop = 0; iLoop < pSqlda->sqld; iLoop++)
{/*对sqltype进行分类只有CCHARTYPE和CINTTYPE两类*/switch(y8.sqltype) { case CCHARTYPE: {
j7.m_iFieldType = STRINGTYPE;j7.m_iFieldLen = y8.sqllen;if (risnull(y8.sqltype, y8.sqldata))
{/*为空时,赋值为NULL*/strcpy(j7.m_tDataValue.m_sStrValue, ""); }else{
/*将数据库取出的值放入m_sStrValue中*/sprintf(j7.m_tDataValue.m_sStrValue, "%s",y8.sqldata);
Dogfish 2012-03-31
  • 打赏
  • 举报
回复
试试这样写法。

<cfset form.sqlstring="select * from table where setupdate > '2012-3-1' ">

<cfquery name ="ttttt" datasource="#dataSource#" >
#form.sqlstring#
</cfquery>
三石-gary 2012-03-28
  • 打赏
  • 举报
回复
不知道用转义字符行不行。。

879

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 ColdFusion
社区管理员
  • ColdFusion社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧