jdbc能否执行sql脚本

jessuLv 2008-04-17 09:57:52
请问jdbc能否执行sql脚本,比如:像sqlserver的脚本。
里面有存储过程,insert,delete语句等。
就像是在用sqlserver的查询分析器一样。
我试了statement,batch,callableStatement等,好像不行。
还望高手多多指教。
...全文
752 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
杜琦 2008-04-18
  • 打赏
  • 举报
回复
应该是可以的,我也是初学,不太明白。。。 mysql是可以的 用executeQuery()方法就可以,不能用executeUpdate();
import java.sql.*;
import java.util.*;



public class DBO {

public List query(){
Connection conn= null;
PreparedStatement ps=null;
ResultSet rs=null;
List list=new LinkedList();
try {
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/myjdbc","root","root");
String sql="select * from user";
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next()){
User user=new User();
user.setUser_id(rs.getInt("user_id"));
user.setUser_name(rs.getString("user_name"));
user.setUser_sex(rs.getString("user_sex"));
user.setUser_age(rs.getInt("user_age"));
user.setUser_level_id(rs.getInt("user_level_id"));
list.add(user);

}

} catch (Exception e) {
e.printStackTrace();
}
finally{
try {if (null!=rs) {
rs.close();
}
if (null!=ps) {
ps.close();
}
if (null!=conn) {
conn.close();
}
} catch (Exception e) {
// TODO: handle exception
}

}



return list;
}
}
panxuan 2008-04-18
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 ahua3515 的回复:]
就是想不通,你那段语句为什么不愿意写在存储过程里面。放在存储过程里,你调用下不就可以了?为什么一定要在jdbc里去执行呢?给jdbc里执行也不安全
[/Quote]
SBtoSB 2008-04-18
  • 打赏
  • 举报
回复
和楼上的同一疑惑。。LZ给个回答
ahua3515 2008-04-18
  • 打赏
  • 举报
回复
就是想不通,你那段语句为什么不愿意写在存储过程里面。放在存储过程里,你调用下不就可以了?为什么一定要在jdbc里去执行呢?给jdbc里执行也不安全
wlzhao 2008-04-18
  • 打赏
  • 举报
回复
jdbc支持transact-SQL指令
connection.prepareStatment("begin\n .....end");
但GO不是transact-SQL指令,GO相当于oracle sql puls 中的run,
存储过程中也不允许出现GO。
wklilong 2008-04-18
  • 打赏
  • 举报
回复
执行*.sql是可以的
*.sql 里的内容也可以和sqlserver中的查询分析器一样
但是具体实现我就不知道了,不过肯定可以实现
因为以前我公司有个项目就是 调用*.sql脚本执行
期待高手出来帮忙
chris9999 2008-04-18
  • 打赏
  • 举报
回复
应该只可以执行DML语句
shaokui_pro 2008-04-18
  • 打赏
  • 举报
回复
表达的不够清晰.
如果想执行类似**.sql 这样的文件 java可以做
如果要在jdbc代码里面写 不可以.
yifeng2006 2008-04-18
  • 打赏
  • 举报
回复
你可以先做语法分析,然后取出要用的TSQL,prepareStatment()
commanager 2008-04-17
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 jessuLv 的回复:]
存储过程预先定义在数据库里的当然
能够执行的。
[/Quote]
是可以运行存储过程的
林g 2008-04-17
  • 打赏
  • 举报
回复
都是牛人啊!
什么都知道!
jessuLv 2008-04-17
  • 打赏
  • 举报
回复
存储过程预先定义在数据库里的当然
能够执行的。
jessuLv 2008-04-17
  • 打赏
  • 举报
回复
像sqlserver 查询分析器的那种脚本
jessuLv 2008-04-17
  • 打赏
  • 举报
回复
我说的是像这样的语句不能执行:

if exists (select *
from master.dbo.sysdatabases
where name='Points')
drop database points
go
/*==============================================================*/
/* 建立数据库Points(请先在D:建立一个Points的文件夹) */
/*==============================================================*/
Create Database Points
on
(Name=Points_DAT,
FileName='d:\Points\Points_DAT.MDF',
Size=2MB,
FileGrowth=10%)
Log on
(Name=Points_LOG,
FileName='d:\Points\Points_LOG.LDF',
Size=1MB,
FileGrowth=10%)
go
ee4456 2008-04-17
  • 打赏
  • 举报
回复
我晕,谁说的不能执行存储过程,String sql="exec xxx";不就行了吗???还能返回RS呢
panxuan 2008-04-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 li_d_s 的回复:]
楼上的太牛了,“Jdbc只能执行基本的增删改查语句”都敢说...
可以自己读出来然后一条一条的加入到batch去执行
[/Quote]
jessuLv 2008-04-17
  • 打赏
  • 举报
回复
jdbc也是能调用存储过程的。
不过就是存储过程在脚本里面,然后仍给 jdbc好像就不能执行了
li_d_s 2008-04-17
  • 打赏
  • 举报
回复
楼上的太牛了,“Jdbc只能执行基本的增删改查语句”都敢说...
可以自己读出来然后一条一条的加入到batch去执行
xby123 2008-04-17
  • 打赏
  • 举报
回复
。。
可能理解比较狭隘啊
xby123 2008-04-17
  • 打赏
  • 举报
回复
Jdbc只能执行基本的增删改查语句。
存储过程什么的要去数据库里做
加载更多回复(9)

67,512

社区成员

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

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