JDBCTest 命令行下自动load外部数据库驱动并执行SQL语句
保存为JDBCTest.java并编译:javac JDBCTest.java 执行:java JDBCTest com.mysql.jdbc.Driver jdbc:mysql://localhost/test root 123456 "select version()"
参数的顺序是驱动包、url、用户名、密码、sql语句。执行结果:
[yz@yz:~]$ java JDBCTest com.mysql.jdbc.Driver jdbc:mysql://localhost/test root 123456 "select version()"
version()[VARCHAR]
5.6.19
(JDBCTest.java会加载外部的驱动包,所以如果能出外网无需考虑是否存在对应的数据库驱动包)
JDBCTest.java源码:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLClassLoader;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
public class JDBCTest {
public static void main(String[] args) {
try {
try {
Class.forName(args[0]);
} catch (ClassNotFoundException e) {
boolean classNotFound = true;
BufferedReader br = new BufferedReader(new InputStreamReader(new URL("http://javaweb.org/jdbc/map.txt").openStream()));
String str = "";
while ((str = br.readLine()) != null) {
String[] arr = str.split("=");
if (arr.length == 2 && arr[0].trim().equals(args[0])) {
try {
URLClassLoader ucl = (URLClassLoader) ClassLoader.getSystemClassLoader();
Method m = URLClassLoader.class.getDeclaredMethod("addURL", URL.class);
m.setAccessible(true);
m.invoke(ucl, new Object[] { new URL(arr[1]) });
Class.forName(arr[0].trim());
classNotFound = false;
break;
} catch (ClassNotFoundException ex) {
throw ex;
}
}
}
if (classNotFound) {
throw e;
}
}
ResultSet rs = DriverManager.getConnection(args[1], args[2], args[3]).prepareStatement(args[4]).executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
System.out.print(rsmd.getColumnName(i) + "["+ rsmd.getColumnTypeName(i) + "]"+"\t");
}
System.out.println();
while (rs.next()) {
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
if (i > 1) {
System.out.print("\t");
}
System.out.print(rs.getObject(rsmd.getColumnName(i)));
}
}
System.out.println();
} catch (Exception e) {
e.printStackTrace();
}
}
}
jar包版:
执行:
[yz@yz:Downloads]$ java -jar JDBCTest.jar com.mysql.jdbc.Driver jdbc:mysql://localhost/test root 123456 "select version()"
version()[VARCHAR]
5.6.19