java 执行sql语句

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语句,可以使用JDBC(Java Database Connectivity)来实现。 JDBC是Java提供的一种用于与数据库进行交互的API。以下是运行SQL语句的基本步骤: 1. 首先,确保你已经在Java项目中引入了适当的数据库驱动程序。这个驱动程序的具体版本取决于你所使用的数据库。你可以从数据库提供商的官方网站上下载适合你数据库版本的驱动程序,并将其添加到项目的类路径中。 引用提供了一个示例命令行运行的方式,其中包括了驱动程序类路径的设置。 2. 在Java代码中,首先需要建立与数据库的连接。这需要提供数据库的连接URL、用户名和密码。连接URL的格式取决于所使用的数据库和驱动程序。你可以在引用中找到一个示例连接URL。 3. 一旦建立了数据库连接,就可以使用Statement或PreparedStatement对象来执行SQL语句。Statement用于执行静态SQL语句,而PreparedStatement用于执行带有参数的SQL语句。你可以使用executeQuery方法来执行SELECT语句并返回查询结果集,使用executeUpdate方法来执行INSERT、UPDATE或DELETE语句并返回受影响的行数。 4. 处理查询结果。如果你执行的是SELECT语句并获得了结果集,你可以使用ResultSet对象来遍历结果并提取数据。 下面是一个简单的示例代码,展示了如何在Java中运行SQL语句: ```java import java.sql.*; public class ExecuteSQLExample { public static void main(String[] args) throws Exception { String url = "jdbc:mysql://IP地址:端口号/数据库名称?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT+8"; String username = "用户名"; String password = "链接密码"; String sql = "SELECT data_code FROM gather_source;"; // 建立数据库连接 Connection connection = DriverManager.getConnection(url, username, password); // 创建Statement对象 Statement statement = connection.createStatement(); // 执行SQL语句并获取结果集 ResultSet resultSet = statement.executeQuery(sql); // 处理查询结果 while (resultSet.next()) { String dataCode = resultSet.getString("data_code"); System.out.println(dataCode); } // 关闭连接和资源 resultSet.close(); statement.close(); connection.close(); } } ``` 请注意,上述代码中的URL、用户名和密码需要根据你自己的数据库配置进行修改。 总结:要在Java中运行SQL语句,你需要建立数据库连接,创建Statement或PreparedStatement对象并执行SQL语句,然后处理查询结果。这样就可以在Java中运行SQL语句了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [java数据库编程——执行SQL 语句](https://blog.youkuaiyun.com/PacosonSWJTU/article/details/50625927)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [JAVA中直接执行sql语句](https://blog.youkuaiyun.com/lock_xuanqing/article/details/127024290)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wait_for_me

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值