如何对以下SQL写JAVA执行程序(高分求教!!!急!!!!!!!!!!!!!!!!!!!!)

Liebestraum 2007-08-09 10:16:47
有以下语句:
if (select object_id('tempdb..#进货来源地分析')) is not null begin drop table #进货来源地分析 end ; if (select object_id('tempdb..#进货来源地分析2')) is not null begin drop table #进货来源地分析2 end ; CREATE TABLE [dbo].[#进货来源地分析] (
[serlid] [int] IDENTITY (1, 1) NOT NULL ,
[海关代码] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[企业名称] [char] (30) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[所属期] [char] (6) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[本年累计美元出口额] [numeric](13, 2) NULL ,
[本年累计已退出口额] [numeric](13, 2) NULL ,
) ON [PRIMARY] ;

请问如何写JAVA语句执行,不能用存储过程
...全文
157 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
sky_810613 2007-08-09
  • 打赏
  • 举报
回复
你应该在sql的开始加begin结束加end;让他形成一个语句块
livan1038 2007-08-09
  • 打赏
  • 举报
回复
protected final boolean process() throws Exception {
Connection oDb_=ConnectDB.getConnect();
String _sSQL1 = “select * from dbo.sysobjects where id = object_id(N'[dbo].[ #进货来源地分析]')”;
String _sDelSQL1 = “ drop table #进货来源地分析 ”;
String _sSQL2 = “select * from dbo.sysobjects where id = object_id(N'[dbo].[ #进货来源地分析2]')”;
String _sDelSQL 2= “ drop table #进货来源地分析2 ”;
String _sCreSQL = “ CREATE TABLE [dbo].[#进货来源地分析] (
[serlid] [int] IDENTITY (1, 1) NOT NULL ,
[海关代码] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[企业名称] [char] (30) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[所属期] [char] (6) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[本年累计美元出口额] [numeric](13, 2) NULL ,
[本年累计已退出口额] [numeric](13, 2) NULL ,
) ON [PRIMARY] ”;

try {
oDb_.prepareStmt(_sSQL1);
ResultSet rs1 = oDb_.prepareQuery();
if (rs1.next()) {
oDb_.prepareStmt(sDelSQL1);
oDb_. PrepareUpdate();
}
oDb_.prepareStmt(_sSQL2);
ResultSet rs2 = oDb_.prepareQuery();
if (rs2.next()) {
oDb_.prepareStmt(sDelSQL2);
oDb_. PrepareUpdate();
}
oDb_.prepareStmt(sCreSQL);
oDb_.prepareUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally{
//關閉各種連接
}
return false;
}
Liebestraum 2007-08-09
  • 打赏
  • 举报
回复
有IF的存在就不能执行
树成 2007-08-09
  • 打赏
  • 举报
回复
你把它们分开来执行呢,不是有几个语句么?
每个sql语句用一个execute
Liebestraum 2007-08-09
  • 打赏
  • 举报
回复
Connection conn=ConnectDB.getConnect();
String str4Sql = " select * into #进货来源地分析2 from #进货来源地分析;";
String strSql = " select * from #进货来源地分析2 where serlid >=? and serlid<=? ; ";
String sql4CreateTmp = " CREATE TABLE [dbo].[#进货来源地分析] ( \n [serlid] [int] IDENTITY (1, 1) NOT NULL , \n [海关代码] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL , \n [企业名称] [char] (30) COLLATE Chinese_PRC_CI_AS NOT NULL , \n [所属期] [char] (6) COLLATE Chinese_PRC_CI_AS NOT NULL , \n [本年累计美元出口额] [numeric](13, 2) NULL , \n [本年累计已退出口额] [numeric](13, 2) NULL , \n ) ON [PRIMARY] ; ";
String sql4DropTab = " if (select object_id('tempdb..#进货来源地分析')) is not null begin drop table #进货来源地分析 end ; ";
String sql4DropTab2 = " if (select object_id('tempdb..#进货来源地分析2')) is not null begin drop table #进货来源地分析2 end ; ";
String sql4DropTab3 = " if (select object_id('tempdb..#进货来源地分析3')) is not null begin drop table #进货来源地分析3 end ; ";
String sql=sql4DropTab + sql4DropTab2 + sql4CreateTmp;
try{
PreparedStatement ps=conn.prepareStatement(sql);
System.out.println(ps.execute());
}catch(Exception ex){
ex.printStackTrace();
}

以上是我写的方法,但是一直都是返回FALSE,我也想用存储过程,但是不允许
livan1038 2007-08-09
  • 打赏
  • 举报
回复
怎麼反其道而行了,我們項目要把要java中操作的SQL全改成proc,說是效能與方便維護問題。
树成 2007-08-09
  • 打赏
  • 举报
回复
不过还是要提醒你,不要这么写,要不用存储过程或函数,要不用动态sql。
树成 2007-08-09
  • 打赏
  • 举报
回复
那不是一样,不过是用execute()方法,返回的是一个boolean值。
Liebestraum 2007-08-09
  • 打赏
  • 举报
回复
livan1038(李枫) 方法可行

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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