package p1;
import com.mysql.cj.xdevapi.PreparableStatement;
import org.junit.Test;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
public class jdbc1 {
@Test
public void test1() throws Exception{
//加载数据库驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//提供路径、用户、密码
String url="jdbc:mysql://localhost:3306/test";
String user="root";
String password="root";
//获取连接
Connection con=DriverManager.getConnection(url,user,password);
System.out.println(con);
//Statement存在被SQL注入的安全问题,所以使用PreparedStatement
//预编译sql语句
String sql1="insert into customers(name,email,birth) values(?,?,?)";
PreparedStatement ps=con.prepareStatement(sql1);
//填充占位符,数据库下标从1开始
ps.setString(1,"哪吒");
ps.setString(2,"nezha@gmail.com");
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-mm-dd");
Date date=sdf.parse("2001-01-01");
ps.setDate(3,new java.sql.Date(date.getTime()));
//执行sql语句,之后关闭资源
ps.execute();
ps.close();
con.close();
}
@Test
public void test2() throws Exception{
Class.forName("com.mysql.cj.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/test";
String user="root";
String password="root";
Connection con=DriverManager.getConnection(url,user,password);
System.out.println(con);
String sql1="update customers set name=? where id=?";
PreparedStatement ps=con.prepareStatement(sql1);
ps.setString(1,"莫扎特");
ps.setObject(2,18);
ps.execute();
ps.close();
con.close();
}
@Test
public void test3() throws Exception{
Class.forName("com.mysql.cj.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/test";
String user="root";
String password="root";
Connection con = DriverManager.getConnection(url, user, password);
System.out.println(con);
String sql1="select id,name,email,birth from customers where id=?";
PreparedStatement ps = con.prepareStatement(sql1);
ps.setObject(1,1);
ResultSet resultSet = ps.executeQuery(); //executeQuery会返回一个结果集
if(resultSet.next()){ //若还有数据,返回true并指针下移,反之false且不动
int id=resultSet.getInt(1);
String name=resultSet.getString(2);
String email=resultSet.getString(3);
Date birth=resultSet.getDate(4);
//ORM思想,1张数据库表可以用1个类对应,1条记录对应1个对象,1个字段对应1个属性
System.out.println(id);
System.out.println(name);
System.out.println(email);
System.out.println(birth);
}
resultSet.close();
ps.close();
con.close();
}
}
加载驱动、获取数据库连接;PreparedStatement预编译sql语句
发布时间 2023-04-10 16:20:29作者: fighterk