gpt4 book ai didi

java - 连接 Bash/Java/MySQL

转载 作者:行者123 更新时间:2023-11-29 01:32:10 24 4
gpt4 key购买 nike

当前设置:

  1. Bash 脚本运行一个 for 循环
  2. 每个运行循环都使用多个命令行参数执行 Java 脚本
  3. Java 连接 MySQL
  4. Java 向 MySQL 发送插入语句

我担心这不是很有效。每次通过 bash 脚本,Java 都会重新启动并重新连接到数据库。如何改进?也许 Java 打开一个套接字并接受来自 bash 脚本的传入消息?我不知道如何做到这一点,或者确保只有 bash 脚本可以通过这个套接字(而不是一些恶意脚本/用户)进行对话。

有什么想法吗?我的 java 代码如下。

    import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;

public class Main {

public static void main(String[] args) throws ClassNotFoundException {

String arg1 = args[0];
String arg2 = args[1];
String arg3 = args[2];
String arg4 = args[3];
int arg5 = Integer.parseInt(args[4]);
int arg6 = Integer.parseInt(args[5]);
int arg7 = Integer.parseInt(args[6]);

Connection con = null;
Statement st = null;
ResultSet rs = null;
PreparedStatement preparedStatement;

String url = "jdbc:mysql://sql.domain.com/table_name";
String user = "root";
String password = "password";

/*
* SOME LOGIC ...
*/

try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection(url, user, password);

// parameterized SQL statement
preparedStatement = con.prepareStatement("insert into some_table values (default, ?, ?);");

// Parameters start with 1 (bogus inserts, ignore these for purpose of question)
preparedStatement.setString(1, "THE NAME");
preparedStatement.setString(2, "A VALUE");
preparedStatement.executeUpdate();

} catch (SQLException ex) {
Logger lgr = Logger.getLogger(Main.class.getName());
lgr.log(Level.SEVERE, ex.getMessage(), ex);

} finally {
try {
if (rs != null) {
rs.close();
}
if (st != null) {
st.close();
}
if (con != null) {
con.close();
}

} catch (SQLException ex) {
Logger lgr = Logger.getLogger(Main.class.getName());
lgr.log(Level.WARNING, ex.getMessage(), ex);
}
}
}
}

最佳答案

如果您只是在 main 中编写一个循环来执行 bash 脚本循环的功能,那会怎么样?您可能会向我们展示脚本,但 Java 可以做任何 bash 能做的事情。

更新

如果您向我们展示 bash 脚本,那真的会有所帮助。你所描述的听起来就像你在做的一样

for i in a b c d e
do
java -jar myprogram.jar $i
done

或遵循类似的模式。为什么不用 Java 中的循环来运行 Java 程序,用 Java 完成所有工作?您真正需要的只是添加

foreach (arg : argv){
// call your original program
}

或非常接近的东西。

关于java - 连接 Bash/Java/MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8619007/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com