原生JDBC

Posted Zennon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了原生JDBC相关的知识,希望对你有一定的参考价值。

1.原生JDBC:
* 原生JDBC:使用java程序操作数据库,对数据库表进行增删改查(CURD)
* 实现步骤:
* 1.注册驱动
* 告知JVM我们使用的是那种驱动程序(mysql驱动,oracle驱动)
* 2.获取数据库连接对象
* mysql数据库,是一个TCP服务器,我们必须使用客户端经过3次握手,和服务器建立连接通路
* 客户端(黑窗口,SQLyog,java程序)
* 就相当于在java程序和mysql服务器之间建立一条道路,这个连接通路中有一个IO对象
* 3.获取执行者对象
* 用来执行sql语句,对象数据库表进行增删改查
* 4.使用执行者对象执行sql语句,获取执行结果
* 增删改:返回值是一个整数,影响数据库的有效行数(affected受影响的)
* 查询:会查询出多行结果,把多行结果,存储一个ResultSet结果集中(集合)
* 5.处理结果集
* 6.释放资源
* 注意:
* 1236是固定不变的步骤
* 45根据增删改查不同,而不同

public class Demo02JDBC {
public static void main(String[] args) throws Exception {
//1.注册驱动
Class.forName("com.mysql.jdbc.Driver");

//2.获取数据库连接对象
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/day04", "root", "root");

//3.获取执行sql语句的执行者对象
Statement stat = conn.createStatement();

//insert(stat);
//update(stat);
//delete(stat);
select(stat);

//6.释放资源
stat.close();
conn.close();
}

private static void select(Statement stat) throws SQLException {

//4.使用执行者对象,执行sql语句
String sql = "SELECT * FROM category";
ResultSet rs = stat.executeQuery(sql);


//5.处理结果
while(rs.next()){

System.out.println(rs.getString("cid")+"\t"+rs.getString("cname"));
}
}

/*
* 使用JDBC技术,对象数据库表中的数据进行删除
*/
private static void delete(Statement stat) throws SQLException {
//4.使用执行者对象,执行sql语句
String sql = "DELETE FROM category WHERE cid IN(5,6)";
int row = stat.executeUpdate(sql);

//5.处理结果集
if(row>0){
System.out.println(row+"行数据删除成功!");
}else{
System.out.println("数据删除失败!");
}
}

/*
* 使用JDBC技术,对象数据库表中的数据进行修改
*/
private static void update(Statement stat) throws SQLException {
//4.使用执行者对象,执行sql语句
String sql = "UPDATE category SET cname = ‘巧克力‘ WHERE cid = 7";
int row = stat.executeUpdate(sql);

//5.处理结果集
if(row>0){
System.out.println("数据修改成功!");
}else{
System.out.println("数据修改失败!");
}
}

/*
* 使用JDBC技术,对象数据库表进行添加数据
*/
private static void insert(Statement stat) throws SQLException {
//4.使用执行者对象,执行sql语句
String sql = "INSERT INTO category (cname) VALUES(‘零食‘)";
int row = stat.executeUpdate(sql);

//5.处理结果集
System.out.println(row);
}
}

 

2.占位符;
//3.获取预编译的执行者对象,需要传递sql语句,sql语句中可以使用?占位符代替实际参数
String sql = "SELECT * FROM users WHERE username=? AND PASSWORD = ?";
PreparedStatement pst = conn.prepareStatement(sql);
/*
* 4.使用PreparedStatement接口中的方法,设置?占位符的实际参数
* void setObject(int parameterIndex, Object x) 使用给定对象设置指定参数的值。
* 参数:
* int parameterIndex:要设置的第几个?占位符;1,2,3.....
* Object x:给?占位符设置的实际参数
* 注意:
* 必须保证给所有的?占位符都设置实际参数,有几个?占位符就调用几次setObject方法
*/
pst.setObject(1, username);
pst.setObject(2, password);




































以上是关于原生JDBC的主要内容,如果未能解决你的问题,请参考以下文章

关于mysql驱动版本报错解决,Cause: com.mysql.jdbc.exceptions.jdbc4Unknown system variable ‘query_cache_size(代码片段

JAVA 使用原生jdbc批量添加,表被锁住问题

使用原生JDBC方式对数据库进行操作

面试常用的代码片段

mysql jdbc源码分析片段 和 Tomcat's JDBC Pool

原生JDBC