JiveJdon Community Forums
在线249人   首页   主题表   培训咨询   标签   精华   查搜   注册    登陆 RSS
首页 » 论坛 » 设计模式、框架和架构
???en_US.forumThreadPrev.name??? 上一主题
google yahoo 365Key网摘 CSDN网摘 添加到百度搜藏 POCO网摘 新浪ViVi 天极网摘
???en_US.forumThreadNext.name??? 下一主题
Go 共有 1 回复 / 1
 发表新帖子   回复该主题贴
hysnoww

悄悄话
发表文章: 2
注册时间: 2002年10月31日 12:00
请教petstore中GenericCatalogDAO中的一个问题! 2002年11月05日 10:52 到本帖网址 加入本帖到收藏夹 回复该主题
标签
请教petstore中GenericCatalogDAO中的一个问题!


private PreparedStatement buildSQLStatement(Connection connection, Statement sqlStatement, String[] parameterValues)
throws SQLException {
StringBuffer buffer = new StringBuffer();
int totalParameterValueNb = parameterValues != null ? parameterValues.length : 0;


for (int i = 0; i < sqlStatement.fragments.length; i++) {


if (sqlStatement.fragments[i].variableOccurrence) {
while (totalParameterValueNb > 0 && totalParameterValueNb >= sqlStatement.fragments[i].parameterNumber) {
buffer.append(sqlStatement.fragments[i].text);
totalParameterValueNb -= sqlStatement.fragments[i].parameterNumber;
}
} else {
buffer.append(sqlStatement.fragments[i].text);
totalParameterValueNb -= sqlStatement.fragments[i].parameterNumber;
}
}

if (totalParameterValueNb > 0) {
System.err.println("Number of values doesn't match number of parameters: " +
totalParameterValueNb +
"/" + parameterValues.length);
}



PreparedStatement statement = connection.prepareStatement(buffer.toString(),ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
if (parameterValues != null) {
for (int i = 0; i < parameterValues.length; i++) {
statement.setString(i + 1, parameterValues[i]);
}
}
return statement;
}

以上方法中的以下代码段
for (int i = 0; i < sqlStatement.fragments.length; i++) {


if (sqlStatement.fragments[i].variableOccurrence) {
while (totalParameterValueNb > 0 && totalParameterValueNb >= sqlStatement.fragments[i].parameterNumber) {
buffer.append(sqlStatement.fragments[i].text);
totalParameterValueNb -= sqlStatement.fragments[i].parameterNumber;
}
} else {
buffer.append(sqlStatement.fragments[i].text);
totalParameterValueNb -= sqlStatement.fragments[i].parameterNumber;
}
}

去掉while 循环语句功能会发生变化吗?
在SQL的.xml配置文件中每个sqlfragment标记中的VARIABLE的含义是什么(如下)?
<SQLStatement method=
"SEARCH_ITEMS">
<SQLFragment parameterNb=
"4">
select catid, a.productid, name, a.itemid, b.image, b.descn, attr1,
attr2, attr3, attr4, attr5, listprice, unitcost
from (((item a join item_details b on a.itemid=b.itemid)
join product_details c on a.productid=c.productid)
join product d on d.productid=c.productid and b.locale = c.locale)
where b.locale = ? and ((lower(name) like ? or lower(catid) like ? or lower(b.descn) like ?)
</SQLFragment>
<SQLFragment parameterNb=
"3" occurrence="VARIABLE">
or (lower(name) like ? or lower(catid) like ? or lower(b.descn) like ?)
</SQLFragment>
<SQLFragment parameterNb=
"0">
)
</SQLFragment>
</SQLStatement>
十分感谢!
banq

悄悄话
发表文章: 9613
注册时间: 2002年08月03日 17:08
Re: 请教petstore中GenericCatalogDAO中的一个问题! 2002年11月05日 21:22 到本帖网址 加入本帖到收藏夹 回复该主题
1.3.1的DAO比1.3要复杂多。
我没仔细看过,觉得这是在玩SQL语句的组合游戏,不知哪位有过研究?
标签
共有 1 回复 / 1Go
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表    返回页首返回页首
???en_US.forumThreadNext.name??? 下一主题
热点TAG:
正在读取,请等待...
查询本论坛内 回复超过的热门帖子
标题
 
粗体: [b]文本[/b] 斜体: [i]文本[/i] 下划线 [u]文本[/u] 插入图片 [img]http://wwww.xxxx.com/img.ext[/img] 插入代码 [code]程序代码[/code]  插入url链接 [url]http://url[/url] / [url=http://url]URL加下滑线[/url] 插入附件 插入word文档 Txt等文件
内容
  提交时自动拷贝以上内容到剪贴板 Ctrl-V可取出;提问题前先查询标签列表

RSS 手机阅读 add to google add to yahoo
解惑之道在J道 ,打造中国最具影响力的的企业软件社区 推荐Chrome快速浏览本站
OpenSource JIVEJDON v3.5 Powered by JdonFramework Code © 2002-09 jdon.com

anti spam