zoukankan      html  css  js  c++  java
  • java中使用db2读取脚本文件的坑

    @Bean
    	public DataSource getDataSource() throws SQLException {
    		DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
    		dataSourceBuilder.driverClassName("org.h2.Driver");
    		dataSourceBuilder.url("jdbc:h2:mem:test;database_to_upper=false;");
    		dataSourceBuilder.username("sa");
    		dataSourceBuilder.password("").build();
    		DataSource dataSource = dataSourceBuilder.build();
    		Connection connection = null;
    		try {
    			ClassPathResource classPathResource = new ClassPathResource("test.sql");
    			connection = dataSource.getConnection();
    			ScriptRunner runner = new ScriptRunner(connection);
    		    runner.setErrorLogWriter(null);
                runner.setLogWriter(null);
             // 执行SQL脚本
                runner.runScript(new InputStreamReader(classPathResource.getInputStream(), StandardCharsets.UTF_8));
    PreparedStatement preparedStatement2 = connection.prepareStatement("select * from `p_event`");
                ResultSet resultSet2 = preparedStatement2.executeQuery();
                while (resultSet2.next()) {
                    int id = resultSet2.getInt("id");
                    System.out.println("id:>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"+id );
                }
                PreparedStatement preparedStatement = connection.prepareStatement("select * from `p_event_record_detail`");
                ResultSet resultSet = preparedStatement.executeQuery();
                while (resultSet.next()) {
                    int id = resultSet.getInt("id");
                    System.out.println("id:>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"+id );
                }
                // 关闭连接
                connection.close();
                // 若成功,打印提示信息
                System.out.println("====== SUCCESS ======");
    		} catch (Exception e) {
    			log.error(e.getMessage());
    		} finally {
    			if (connection != null) {
    				connection.close();
    			}
    		}
    		return dataSource;
    	}
    

      

    如上代码:

      读取完脚本之后,先查询了`p_event`表,查询结果正常。但是在查询`p_event_record_detail`表时,总是抛出异常,异常信息为找不到该表。

    最终排查结果: 

        db2的sql脚本语法中:注释(comment)的内容中不能包含英文字符分号(;)。

    正确写法:

    `fail_rollback` tinyint(5)             NOT NULL DEFAULT 1 COMMENT '同步事件回滚标记:0:回滚;1:不回滚'
    

      

    错误写法:(注意sql中的分号,此处为英文符号)

    `fail_rollback` tinyint(5)             NOT NULL DEFAULT 1 COMMENT '同步事件回滚标记:0:回滚;1:不回滚'
    

      

  • 相关阅读:
    js点击显示全部内容(用于内容比较长时)
    vs中运行时如何去除虚拟目录
    selenium使用中的几个问题
    解决播客程序不能播放Flv文件的问题
    VS2005 + VSS6.0 简单应用示例
    IList转换为DataTable
    asp.net根据生日计算年龄(具体到年月天)
    vs2005菜单中没有显示源代码管理怎么办
    asp.net解决中文乱码问题
    跨域删除cookie的问题
  • 原文地址:https://www.cnblogs.com/zhlblogs/p/14843467.html
Copyright © 2011-2022 走看看