精华内容
下载资源
问答
  • java执行sql语句
    千次阅读
    2018-12-08 14:41:56

    java 调用 .sql  文件,并执行数据库语句 

    package com.skycc.util;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.util.Properties;
    
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.jdbc.ScriptRunner;
    
    public class SqlFileUtils {
        
        public static void main(String[] args) {
            try { 
                runSqlInStat("E:/sql/t_config.sql");
            } catch (Exception e) { 
                e.printStackTrace(); 
            }
        } 
        
        
        
        /**
         * 执行xx库下的表备份脚本
         *
         * @param tableName
         */
        public static void runSqlInStat(String path) {
            Properties prop=new Properties();
            try {
                InputStream in = SqlFileUtils.class.getClassLoader().getResourceAsStream("application.properties");
                prop.load(in);
            } catch (Exception e) {
                e.printStackTrace();
            }
            String className = prop.getProperty("spring.datasource.driver-class-name");
            String dbUrl = prop.getProperty("spring.datasource.url");
            String dbUsername = prop.getProperty("spring.datasource.username");
            String dbPassword = prop.getProperty("spring.datasource.password");
            try {
                Class.forName(className);
                Connection conn = DriverManager.getConnection(dbUrl, dbUsername, dbPassword);
                ScriptRunner runner = new ScriptRunner(conn);
                runner.setAutoCommit(true);
    
                String fileName = String.format(path);
                File file = new File(fileName);
                try {
                    if (file.getName().endsWith(".sql")) {
                        runner.setFullLineDelimiter(false);
                        runner.setDelimiter(";");//语句结束符号设置
                        runner.setLogWriter(null);//日志数据输出,这样就不会输出过程
                        runner.setSendFullScript(false);
                        runner.setAutoCommit(true);
                        runner.setStopOnError(true);
                        runner.runScript(new InputStreamReader(new FileInputStream(fileName), "utf8"));
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                conn.close();
            } catch (Exception e) {
                e.printStackTrace();
            } 
    
        }
    }
    

     

    更多相关内容
  • 主要介绍了java执行SQL语句实现查询的通用方法详解,具有一定借鉴价值,需要的朋友可以参考下。
  • java定时执行sql语句

    2018-03-09 16:13:00
    通过配置数据库连接信息和要执行sql语句,可实现定时执行多个sql语句。 所要执行的语句只能是写死的,可支持sqlserver mysql oracle。 配置说明: config/sys.properties 中指定数据库类型及连接信息,执行间隔...
  • 2、java.sql.Statement 返回键获取: a: 使用JDBC 3.0提供的 getGeneratedKeys(推荐使用) Statement stmt = ... ; stmt.executeUpdate("INSERT INTO table_name(......) VALUES(......)", Statement.RETURN_...

    当我们插入一条数据的时候,我们很多时候都想立刻获取当前插入的主键值返回以做它用。我们通常的做法有如下几种:

    1、先 select max(id) +1 ,然后将+1后的值作为主键插入数据库;

    2、使用特定数据库的 auto_increment 特性,在插入数据完成后,使用 select max(id) 获取主键值;

    3、对于Oracle,使用 sequence 获取值。

    对于以上3种方法都无法绝对保证在高并发情况下的操作的原子性。

    现记录以下几种获取数据库主键值方法:

    1、数据库原生支持的sql方法:

    SQLServer:

    INSERT INTO table_name (.....) VALUES(......)  SELECT @@IDENTITY AS aliasname;

    上面的语句相当于查询语句,从结果集中使用 getXXX(aliasname) 方法获取主键值。

    Oracle:

    INSERT INTO table_name(......) VALUES(......) RETURNING[primaryKey INTO]:aliasname;

    也是相当于查询语句,从结果集中使用 getXXX(aliasname) 方法获取主键值。

    2、java.sql.Statement 返回键获取:

    a: 使用JDBC 3.0提供的 getGeneratedKeys(推荐使用)

    Statement stmt = ... ;

    stmt.executeUpdate("INSERT INTO table_name(......) VALUES(......)", Statement.RETURN_GENERATED_KEYS);

    ResultSet rs = stmt.getGeneratedKeys();

    int keyValue = -1;

    if (rs.next()) {

    keyValue = rs.getInt(1);

    }

    b:使用特定数据库特有的SQL

    Statement stmt = ... ;

    stmt.executeUpdate("INSERT INTO table_name(......) VALUES(......)", Statement.RETURN_GENERATED_KEYS);

    ResultSet rs = stmt.executeQuery("SELECT LAST_INSERT_ID()");

    int keyValue = -1;

    if (rs.next()) {

    keyValue = rs.getInt(1);

    }

    那么现在我就一个例子来看一下原生的sql怎么能得到执行的返回结果

    项目背景:数据库是oracle数据库,id生成规则是通过触发器插入数据的时候自动增长,所以在插入数据的时候在sql中就不需要指明id值。但是另外一张表需要引用这个id值作为外键,那么就必须获得被引用的这个表的ID,为了避免并发问题,我们只能在插入前面那张表的时候就获得他的ID,所以我使用了下面的方法来处理。

    Connection con = DBConnector.getconecttion(); // 取得一个数据库连接

    CallableStatement cst = null;

    con.setAutoCommit(false);

    String insertSql = "begin insert into TABLE (field_0,field_1) values (value_0,value_1) returning id into ?;end; ";

    try {

    cst = con.prepareCall(insertSql); //执行存储过程

    cst.registerOutParameter(1, Types.INTEGER); //为存储过程设定返回值

    int count = cst.executeUpdate(); //得到预编译语句更新记录或删除操作的结果

    int id = cst.getInt(1); //得到返回值

    System.out.println("成功执行了:" + count + "条数据,其ID值:" + id);

    } catch (SQLException e1) {

    con.rollback();

    con.setAutoCommit(true);

    }finally{

    con.commit();

    con.close();

    }

    展开全文
  • JAVA中直接执行sql语句示例

    千次阅读 2021-07-15 09:13:05
    import java.sql.*; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Test { //执行select private List<Map<String, Object>>...

    代码:

    import java.sql.*;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    public class Test {
    
        //执行select
        private List<Map<String, Object>> executeGet(String schema, String sql) throws SQLException {
            Statement statement = null;
            ResultSet resultSet = null;
            try {
                Connection connection = getConnection();
                connection.setCatalog(schema);
                statement = connection.createStatement();
                resultSet = statement.executeQuery(sql);
                ResultSetMetaData metaData = resultSet.getMetaData();
                List<Map<String, Object>> resultList = new ArrayList<>();
                while (resultSet.next()) {
                    Map<String, Object> dataMap = new HashMap<>();
                    for (int i = 1; i <= metaData.getColumnCount(); i++) {
                        dataMap.put(metaData.getColumnLabel(i), resultSet.getObject(i));
                    }                resultList.add(dataMap);
                }
                return resultList;
            } catch (Exception e) {
                throw e;
            } finally {
                try {
                    if (resultSet != null) {
                        resultSet.close();
                    }
                    if (statement != null) {
                        statement.close();
                    }
                } catch (SQLException e) {
    
                }
            }
        }
    
        //执行update,insert,delete
        private int executeUpdate(String schema, String sql) throws SQLException {
            Statement statement = null;
            try {
                Connection connection = getConnection();
                connection.setCatalog(schema);
                statement = connection.createStatement();
                return statement.executeUpdate(sql);
            } catch (Exception e) {
                throw e;
            } finally {
                try {
                    if (statement != null) {
                        statement.close();
                    }
                } catch (SQLException e) {
    
                }
            }
        }
    
    	//将结果集转换为对象
        public static <T> List<T> parserDbo(List<Map<String, Object>> dboMapList, Class<T> dboClass, boolean canEmpty) throws Exception {
            if (CollectionUtil.isEmpty(dboMapList)) {
                if (!canEmpty) {
                    throw new Exception("");
                }
                dboMapList = new ArrayList<>();
            }
            List<T> resultList = new ArrayList<>();
            for (Map<String, Object> dboMap : dboMapList) {
                resultList.add(BeanUtil.mapToBean(dboMap, dboClass, false));
            }
            return resultList;
        }
    
    
    }
    
    

    注意:BeanUtil.mapToBean这个方法,需要导入以下依赖

        <dependency>
          <groupId>cn.hutool</groupId>
          <artifactId>hutool-all</artifactId>
          <version>5.7.4</version>
        </dependency>
    
    展开全文
  • 该资源能够帮助使用者快速将嵌有sql语句Java代码转换为纯sql语句,也可以将纯sql语句转换为java拼接的方式。
  • // 执行更新语句 LianaDBAccess.executeSQLUpdate(connection,"UPDATE CB_TO SET TO_TO='" + to + "'"); connection.commit(); return true; } catch (TranFailException e) { // TODO Auto-...

    一、查询

    String SEARCH = "select TOK_TO from CB_TO ";
    	private String getTo() {
    		String to = "";
    		// 建立数据库连接
    		try {
    			Connection connection = null;
    			PreparedStatement statement = null;
    			ResultSet resultSet = null;
    			connection = LianaDBAccess.getConnection();
    			statement = connection.prepareStatement(SEARCHTOKEN);
    			resultSet = statement.executeQuery();
    			if (resultSet.next()) {
    				to = resultSet.getString(1);
    			}
    			connection.close();
    		} catch (TranFailException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		return to;
    	}
    

    二、更新

    private boolean updateTo(String to) {
    		Connection connection = null;
    		// 建立数据库连接
    		try {
    			connection = LianaDBAccess.getConnection();
    			// 执行更新语句
    			LianaDBAccess.executeSQLUpdate(connection,"UPDATE CB_TO SET TO_TO='" + to + "'");
    			connection.commit();
    			return true;
    		} catch (TranFailException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    			JOptionPane.showMessageDialog(null, "更改发生异常"); 
    			return false;
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    			JOptionPane.showMessageDialog(null, "更改发生异常"); 
    			return false;
    		} finally {
    			try {
    				LianaDBAccess.releaseConnection(connection);
    			} catch (TranFailException ex) {
    				Trace.logError(Trace.COMPONENT_ACTION, "更改发生异常", ex);
    				return false;
    			}
    		}
    
    	}
    
    展开全文
  • } } } 结果是::我试了什么语句都不好使,怎么回事啊,在线等 开始连接 连接成功! 创建stm成功 public class DBManager { private DBManager() {} static{ try { Class.forName(DBDriverClass); } catch ...
  • 使用JAVA运行SQL

    千次阅读 2020-08-20 10:24:38
    Oracle JDBC 驱动程序:允许java程序中的JDBC语句访问Oracle数据库。 java中使用JDBC,必须将对应的JDBC包导入程序:import java.sql.* java有两套jdbc包: 标准JDBC: 允许程序访问大多数数据库的基本功能 Oracle的...
  • java生成SQL语句

    2021-02-27 14:06:05
    代码如下:/** * 动态生成SQ及SQL参数L* @param ve 接收到的消息的CHGLIST* @param paramList MQ消息中的SQL参数* @param t 泛型对象* @param table 数据表* @param list 可执行SQL语句集合* @return */public ...
  • java中怎么执行sql语句

    2017-08-20 08:54:06
    如图我想在 java代码的方法里执行这条sql插入语句,把一条记录save进oracle数据库,菜鸟不知道怎么写,求帮助![图片说明](https://img-ask.csdn.net/upload/201708/20/1503219228_332645.png)
  • /** * 执行多条更新的Sql语句 */public boolean UpdataSql(String sql[]){TestConnect.Connect(); try { sta = TestConnect.connection.createStatement(); for(int i=0;i s...
  • NULL 博文链接:https://lkf009.iteye.com/blog/1670754
  • JAVA连接SQL数据库 如何让JAVA的输出具体的执行SQL语句JAVA连接SQL数据库 如何让JAVA的输出具体的执行SQL语句相关问题:匿名网友:import java.sql.ResultSet; //都是导入一些下面需要用到的类String ConnStr=...
  • Java中批量执行sql语句

    2021-02-12 22:14:14
    在我们实际项目开发过程中,可能有的功能在后台需要执行几条sql语句甚至需要批量的执行一些sql语句,如果是循环一条一条执行,我想大家都知道这样做的效率特别低,尤其是批量sql时,但是如果我们先循环把整个的拼成...
  • 主要介绍了10种Java开发者编写SQL语句时常见错误,当Java开发人员编写SQL语句时,一切都变得不同了。SQL是一种说明式语言,与面向对象思想和命令式思想无关,需要的朋友可以参考下
  • 一、JDBC中批处理SQL语句的介绍 二、使用批量处理和非批量处理,进行演示,看具体的耗时区别 public class Batch_ { @Test public void noBatch() throws Exception { Connection connection = JDBCUtils.get...
  • Spring 中提供了一个 jdbc 脚本执行器,使用这个工具可以非常方便的运行一个 sql 脚本文件,下面是这个方法: ScriptUtils.executeSqlScript() 只需要传入它需要的参数即可。 下面代码运行 sql 目录中的四个脚本程序...
  • 使用Java自定义注解来拼接SQL查询语句,方便使用。
  • 问题描述:连接数据库,执行SQL语句是必不可少的,下面给出了三种执行不通SQL语句的方法。1.简单的Statement执行SQL语句。有SQL注入,一般不使用。public static void testStatement() throws Exception{Statement ...
  • //java 用jdbc连接mysql 并执行sql语句import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;public class JDBCMySQL {public static final String ...
  • java执行SQL语句实现查询的通用方法

    万次阅读 2015-08-22 09:42:09
    查询的结果集保存并返回调用函数 结果集中数据存储到类型的.../* * 执行sql查询语句 */ public static Vector executeQuery(Class clazz, String sql, Object... args) { Connection conn = null; PreparedStat
  • 如何从Java执行多个SQL语句

    千次阅读 2021-03-08 14:49:09
    批处理允许您将相关的SQL语句分组为一个批处理,并通过一次调用将其提交给数据库。参考当您一次将多个SQL语句发送到数据库时,可以减少通信开销,从而提高性能。不需要JDBC驱动程序即可支持此功能。您应该使用该...
  • 这是一个基本的例子:我想创建一个用预准备语句更新值的java方法.示例代码:更新的代码public void updateDBSettings() throws SQLException {String SQL_Statement = null;if (ds == null) throw new SQLException...
  • java执行sql语句一直没有响应

    千次阅读 2016-04-08 09:44:34
    在昨天晚上,我运行一条很简单的sql语句。之前是没有问题。但是后来运行,却迟迟没有响应。 苦想了一个晚上,觉得没什么问题,第二天,我用plsql执行这条语句,发现一直显示的是 心想,这么一条简单的语句,为什么都...
  • Java连接mysql数据库并执行sql语句

    千次阅读 2020-06-22 16:25:46
    弄这个主要是为了方便测试单个sql的性能,尝试用java连接数据库并查询,将结果的JDBC ResultSet结果集转成List并输出。 import java.sql.*; import java.sql.DriverManager; import com.mysql.jdbc.Connection; ...
  • Java实现关系型数据库工具类JdbcUtils系列四:PreparedStatement执行sql语句实现查询一、建表语句二、JdbcUtils实现建立连接和关闭连接三、PreparedStatement实现查询 一、建表语句 CREATE TABLE `stuinfo` ( `id` ...
  • 1.网上搜索了很多,几乎都是能修改sql, 但是修改后的sql不生效,还是执行原来的sql. 2.这个版本亲测可以生效。 3.支持分页查询
  • 问题在这里举一个例子,比如我要做一个多条件模糊查询,用户输入的时候有可能输入一个条件,也有可能输入两个条件,这时执行查询的sql语句就不确定了,但可以用动态拼接sql语句来解决这个问题。解决方法1.就拿我上面...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 450,221
精华内容 180,088
关键字:

java执行sql语句