本次试验怎么用jdbc连接PostGreSql数据库。首先需要安装一个pgsql数据库,安装就不介绍了。安装后自己用SQL创建表,如有下图的库和表,怎么用java带SQL参数连接他取的数据。
PG库下载地址
首先到官网上根据自己的Java版本下载jdbc驱动jdbc下载地址
下载后把驱动投入libs
同时拷贝maven串
把maven串贴入工程
然后添加引用jar包
然后写代码操作数据库
import java.io.File;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.lang.Class;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.jar.JarFile;
import java.util.jar.JarEntry;
import ZLZJar.*;
import java.sql.*;
//zlz练习
public class Main {
//m主方法
public static void main(String[] args) {
try {
//自己生成jar包路径
URL url = new File("D:\\ZLZJar\\out\\artifacts\\ZLZJar\\ZLZJar.jar").toURI().toURL();
URL[] urls = new URL[]{url};
//加载程序集
URLClassLoader loader = new URLClassLoader(urls);
//加载类
Class c = loader.loadClass("ZLZJar.Test");
//创建对象
Object o = c.newInstance();
//得到方法
Method m = c.getMethod("Hello");
//执行
m.invoke(o);
//有参数的方法通过名称无法得到,自己包装一下
//Method mAdd = c.getMethod("Add");
Method mAdd = GetMethod(c, "Add");
Object ret = mAdd.invoke(o, 1, 2);
System.out.println("求和结果:" + ret);
//转换成接口,这个很重要,后面的实现类都实现特定接口,通过反射得到对象调用,实现多态和动态调用
ITest it = (ITest) o;
//接口调用
it.Invoke("zlz调用传入的参数");
PgSqlTest();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
//连接PostGreSql测试
public static void PgSqlTest() {
//连接串,最后的是数据库名称
String url = "jdbc:postgresql://localhost:5432/dhclisdata";
//用户
String user = "postgres";
//密码
String password = "SYS";
//建立连接
Connection conn = null;
//command
PreparedStatement stmt = null;
try {
//加载驱动
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection(url, user, password);
//编译和执行SQL语句,传输SQL参数查询1997-2000行
String sql = "SELECT * FROM dbo.SYS_Form where \"RowID\">? and \"RowID\";";
stmt = conn.prepareStatement(sql);
stmt.setInt(1,1997);
stmt.setInt(2,2000);
//结果集
ResultSet rs = stmt.executeQuery();
// 处理查询结果
while (rs.next()) {
//取列数据
int RowID = rs.getInt("RowID");
String CName = rs.getString("CName");
String Path = rs.getString("Path");
//输出
System.out.println(RowID + "\t" + CName + "\t" + Path);
}
// 关闭 ResultSet、Statement 和 Connection 对象
rs.close();
}
catch (SQLException se) {
// 处理 JDBC 异常
se.printStackTrace();
}
catch (Exception e) {
// 处理 Class.forName 异常
e.printStackTrace();
}
finally {
// 关闭资源
try {
if (stmt != null)
{
stmt.close();
}
}
catch (SQLException se2) {
}
try {
if (conn != null)
{
conn.close();
}
}
catch (SQLException se2) {
}
}
}
//通过类型和名称得到方法
public static Method GetMethod(Class c, String name) {
Method[] methods = c.getMethods();
for (Method method : methods) {
System.out.println("类名:" + method.getName().intern());
if (method.getName().intern() == name) {
return method;
}
}
return null;
}
}
操作数据库部分
//连接PostGreSql测试
public static void PgSqlTest() {
//连接串,最后的是数据库名称
String url = "jdbc:postgresql://localhost:5432/dhclisdata";
//用户
String user = "postgres";
//密码
String password = "SYS";
//建立连接
Connection conn = null;
//command
PreparedStatement stmt = null;
try {
//加载驱动
Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection(url, user, password);
//编译和执行SQL语句,传输SQL参数查询1997-2000行
String sql = "SELECT * FROM dbo.SYS_Form where \"RowID\">? and \"RowID\";";
stmt = conn.prepareStatement(sql);
stmt.setInt(1,1997);
stmt.setInt(2,2000);
//结果集
ResultSet rs = stmt.executeQuery();
// 处理查询结果
while (rs.next()) {
//取列数据
int RowID = rs.getInt("RowID");
String CName = rs.getString("CName");
String Path = rs.getString("Path");
//输出
System.out.println(RowID + "\t" + CName + "\t" + Path);
}
// 关闭 ResultSet、Statement 和 Connection 对象
rs.close();
}
catch (SQLException se) {
// 处理 JDBC 异常
se.printStackTrace();
}
catch (Exception e) {
// 处理 Class.forName 异常
e.printStackTrace();
}
finally {
// 关闭资源
try {
if (stmt != null)
{
stmt.close();
}
}
catch (SQLException se2) {
}
try {
if (conn != null)
{
conn.close();
}
}
catch (SQLException se2) {
}
}
}
测试
jdbc操作数据库完成,第三个技术点积累完毕