【发布时间】:2015-03-04 05:42:12
【问题描述】:
我有一个 java 文件,它与后端数据库交互并为我检索行,
我的java与db交互的代码部分如下,
try {
con = DBconnection.getConnection();
System.out.println("in get_camplist");
String brand = request.getParameter("brand_id");
System.out.println(brand);
int bid = Integer.parseInt(brand);
System.out.println(bid);
String start_date = request.getParameter("s_date");
String end_date = request.getParameter("e_date");
System.out.println(start_date);
prepStmt = con.prepareStatement(dbquery.getContentTable);
prepStmt.setInt(1, bid);
prepStmt.setString(2, start_date);
prepStmt.setString(3, end_date);
rs = prepStmt.executeQuery();
tblist = new ArrayList<Cont_foc_tab>();
Cont_foc_tab tb = null;
while (rs.next()) {
tb = new Cont_foc_tab(rs.getString("video_Name"), rs.getLong("views"), rs.getLong("likes"), rs.getLong("comments"), rs.getLong("shares"), rs.getLong("engagement"));
tblist.add(tb);
}
dbquery.getContentTable 查询如下
public static String getContentTable = "select a.vidid as video_id,b.Vid_Name as video_Name,b.Vid_URL as url, " +
" a.Views as views,a.likes as likes,a.comments as comments,a.shares as shares,a.Engagement as engagement " +
" from ((select VidID as vidid,SUM(Yt_Views) as Views,SUM(Yt_Likes) as likes, " +
" SUM(Yt_Comments) as comments,SUM(Yt_Shares) as shares,round(((cast((SUM(Yt_Likes) + SUM(Yt_Shares) + SUM(Yt_Comments)) as float)/SUM(Yt_Views))*100),2) as Engagement " +
" from SocMet_VidMetrics_Fact " +
" where VidID in (select distinct VidID from SocMet_VidMetrics_Fact where ProdID= ? ) and " +
" (DateKey>=(select DateKey from DimDate where Date= ? ) " +
" and DateKey<=(select DateKey from DimDate where Date= ? )) " +
" group by VidID) a left join SocMet_VidDetails_Dim b on a.VidID=b.VidID) " +
" where a.vidid in ('-wK47AqI7P0','_8PdkNMNrBo','cjHJCF0seMQ','7aCUq-cPGbQ','5hSUbGStxhY','HPXHV6iHzIk','BLbxRvjDzd0','kvD0h-Ce52c','CcWnfduAS_E','PeHbEGKyBiY','A5HKiUe4KaU','bGcoQN-crzg','BMGMi2Webd0','YSVL4FvFhvw','vZgIbWTEoMA','OFCnDURIPQg'); ";
当我尝试通过在 sql server management studio 中传递相同的值来执行相同的查询时,它可以正常工作并返回行,当我尝试动态传递参数时它不会返回任何行,
sql管理工作室中的sql查询
select a.vidid as video_id,b.Vid_Name as video_Name,b.Vid_URL as url,
a.Views as views,a.likes as likes,a.comments as comments,a.shares as shares,a.Engagement as engagement
from ((select VidID as vidid,SUM(Yt_Views) as Views,SUM(Yt_Likes) as likes,
SUM(Yt_Comments) as comments,SUM(Yt_Shares) as shares,round(((cast((SUM(Yt_Likes) + SUM(Yt_Shares) + SUM(Yt_Comments)) as float)/SUM(Yt_Views))*100),2) as Engagement
from SocMet_VidMetrics_Fact
where VidID in (select distinct VidID from SocMet_VidMetrics_Fact where ProdID= 20 ) and
(DateKey>=(select DateKey from DimDate where Date='01/01/2012' )
and DateKey<=(select DateKey from DimDate where Date='07/31/2014' ))
group by VidID) a left join SocMet_VidDetails_Dim b on a.VidID=b.VidID)
where a.vidid in ('-wK47AqI7P0','_8PdkNMNrBo','cjHJCF0seMQ','7aCUq-cPGbQ','5hSUbGStxhY','HPXHV6iHzIk','BLbxRvjDzd0','kvD0h-Ce52c','CcWnfduAS_E','PeHbEGKyBiY','A5HKiUe4KaU','bGcoQN-crzg','BMGMi2Webd0','YSVL4FvFhvw','vZgIbWTEoMA','OFCnDURIPQg');
【问题讨论】:
-
您是否尝试过使用命名参数(例如
WHERE Date = @givenDate)?也许您的问题只是提供的参数顺序不正确 -
你为什么用
setString约会? -
我确定参数的顺序是正确的,不过我会尝试执行@givenDate
-
我从前端@Ic 获取我的日期作为字符串
-
@Desolator 你能给我一个命名参数的例子吗?
标签: java sql-server spring parameter-passing