JDBC中常用的setObject方法
JDBC规范指定了从java对象类型到SQL类型的标准映射。给定的参数将在发送到数据库之前转换为相应的SQL类型
- mysql连接数据库代码
public class Basedao {
static {
//加载驱动
try {
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static Connection getconn() {
Connection conn = null;
try {
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/shop_project?useSSL=false&serverTimezone=UTC","root","1234");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
public static int exectuIUD(String sql,Object[] params) {
int count =0;
Connection conn = Basedao.getconn();
//准备sQL语句
PreparedStatement ps =null;
//insert into user(```````,```) value(?,?,?)
try {
//准备SQL语句
ps = conn.prepareStatement(sql);
//遍历参数
for(int i=0;i<params.length;i++) {
ps.setObject(i+1, params[i]);
}
//执行sql语句
count=ps.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
Basedao.closeall(null, ps, conn);
}
return count;
}
public static void closeall(ResultSet rs,PreparedStatement ps,Connection conn) {
//关闭连接
try {
if(rs!=null) {
rs.close();
}
if(ps!=null) {
ps.close();
}
if(conn!=null) {
conn.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Static 关键字
-
将对象层级提升为类层级 (即将对象可以调用的,提升为对象和类均可调用的成员); //推荐使用类来调用 ClassNme.静态成员 (包括变量、方法、成员对象)
-
static修饰的成员,在类加载时即准备完成,而不需要创建对象; //类加载只做一次:
类名 的时候会类加载;
new 对象时会类加载 -
静态成员方法只能访问静态成员,不能访问非静态成员(因为调用该方法时可能还没有创建对象); 而非静态成员方法既能访问非静态成员,又能访问静态成员(因为静态成员被所有对象共享)
-
提高运行时的优先级
static关键字还有一个比较重要的作用就是用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来依次执行每个static块,并且只会执行一次。
创建c1时,numOfCats == 1;
创建c2时,numOfCats == 3;
- 通常情况下成员变量隶属于对象层级,也就是每当创建一个对象就会拥有独立的内存空间来存放独立的成员变量信息(在堆中),若所有对象中某个成员变量完全相同时(如户籍管理系统中的国籍),还要各自存储,则会造成内存空间的浪费。
- 为了解决上述问题则使用static关键字修饰该成员变量表达静态的含义,此时该成员变量由对象层级提升为类层级只有一份,并被所有对象共享,会随着类的加载而准备就绪,与是否创建对象无关。此时使用静态成员变量推荐用 类名.静态成员变量名 进行访问,
- 代码块 – java允许直接用{}写代码,叫代码块。jdbc中需要在类加载时 (在对象创建之前),要加载数据库驱动
- 写在类体中的代码块叫构造块,每创建一个对象,构造块都会被执行一次。
前面加static的构造块叫静态代码块,类加载时执行一次。