就是将脚本读进来,然后直接仍给jdbc去处理。

解决方案 »

  1.   

    Jdbc只能执行基本的增删改查语句。
    存储过程什么的要去数据库里做
      

  2.   

    楼上的太牛了,“Jdbc只能执行基本的增删改查语句”都敢说...
    可以自己读出来然后一条一条的加入到batch去执行
      

  3.   

    jdbc也是能调用存储过程的。
    不过就是存储过程在脚本里面,然后仍给 jdbc好像就不能执行了
      

  4.   

    我晕,谁说的不能执行存储过程,String sql="exec xxx";不就行了吗???还能返回RS呢
      

  5.   

    我说的是像这样的语句不能执行: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
      

  6.   

    像sqlserver 查询分析器的那种脚本
      

  7.   

    如果是存储过程直接用callableStatement执行
    如果是脚本,放到begin 和 end 之间执行
      

  8.   

    如果是sqlserver的语法,里面有go就报错比如:
    begin
    insert into Points.dbo.suiteSales (suite_code,sale_mounts,thbz) values(1,1,'N')
    insert into Points.dbo.suiteSales (suite_code,sale_mounts,thbz) values(1,1,'N')
    go
    insert into Points.dbo.suiteSales (suite_code,sale_mounts,thbz) values(1,1,'N')
    go
    insert into Points.dbo.suiteSales (suite_code,sale_mounts,thbz) values(1,1,'N')
    insert into Points.dbo.suiteSales (suite_code,sale_mounts,thbz) values(1,1,'N')
    go
    insert into Points.dbo.suiteSales (suite_code,sale_mounts,thbz) values(1,1,'N')
    end
      

  9.   

    不要用go, JDBC不支持go
    go 不是 transact-SQL 指令
      

  10.   

    那jdbc不支持transact-SQL指令是吧
      

  11.   

    执行sql语句用PreparedStatement
    调用存储过程用CallableStatement
      

  12.   

    jdbc支持transact-SQL指令
    connection.prepareStatment("begin\n .....end");
    但GO不是transact-SQL指令,GO相当于oracle sql puls 中的run,
    存储过程中也不允许出现GO。
      

  13.   

    就是想不通,你那段语句为什么不愿意写在存储过程里面。放在存储过程里,你调用下不就可以了?为什么一定要在jdbc里去执行呢?给jdbc里执行也不安全
      

  14.   

    应该是可以的,我也是初学,不太明白  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;
     }
    }
      

  15.   

    你可以先做语法分析,然后取出要用的TSQL,prepareStatment()
      

  16.   

    表达的不够清晰.
    如果想执行类似**.sql 这样的文件  java可以做
    如果要在jdbc代码里面写 不可以.
      

  17.   

    执行*.sql是可以的
    *.sql 里的内容也可以和sqlserver中的查询分析器一样
    但是具体实现我就不知道了,不过肯定可以实现
    因为以前我公司有个项目就是 调用*.sql脚本执行
    期待高手出来帮忙