我是刚入门java的菜鸟,到CSDN膜拜大佬。下面分享一下JDBC,初来乍到多多关照,对于学习Java干完事!
sun公司设定的一套数据库标准,标准就是JDBC(Java Database Connectivity)。
但它只是规范,不做具体实现。于是数据库厂商又根据JDBC标准,实现自家的驱动Driver。
如:mysql驱动com.mysql.cj.jdbc.Driver,Oracle的驱动oracle.jdbc.OracleDriver。有了这套解决方案,java就可以访问数据库中的数据了。
Java中提倡面向接口开发,而最经典的接口设计莫过于JDBC数据库接口。
Connection链接、Statement语句、PreparedStatement预处理语句、CallableStatement存储过程、ResultSet结果集。
调用方式有三种:
(1)Statement语句、
(2)PreparedStatement预处理语句、
(3)CallableStatement存储过程,
推荐使用第二种PreparedStatement,防止SQL注入,其也是预编译性能高。
执行流程:
- 注册数据库驱动
Class.forName(driverClass)
//加载MySql驱动
Class.forName("com.mysql.jdbc.Driver")
//加载Oracle驱动
Class.forName("oracle.jdbc.driver.OracleDriver")
- 获取数据库连接
Connection conn = DriverManger.getConnection(URL,"数据库用户名","数据库密码");
URL:"jdbc:mysql://localhost:3306/数据库库名"
DriverManger.getConnection() 用于获取数据库连接
- 传输器(statement/PreparedStatement)
Statement stat = conn.CreateStatement();
conn.createStatement();
conn.prepareStatement(sql);
- 结果集对象(ResultSet)
ResultSet对象用于封装SQL语句查询的结果,提供了遍历数据及获取数据的方法
ResultSet rs = stat.executeQuery(sql) //执行SQL语句返回结果集
executeQuery(String sql);
用于向数据库发送查询类的SQL语句,返回一个ResultSet对象中
executeUpdate(String sql);
用于向数据库发送更新(增删改)类型的语句,返回一个int值,表示影响的行数
package cn.tedu.jdbc;
import java.sql.*;
public class Testjdbc {
public static void main(String[] args) throws Exception{
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/mall"; //注意SID
String sql = "select * from item";
String user = "root";
String password = "root";
Class.forName(driver);
Connection cn = DriverManager.getConnection(url, user, password);
PreparedStatement stat = cn.prepareStatement(sql);
ResultSet rs = stat.executeQuery(sql); //执行SQL语句返回结果集
ResultSetMetaData md = rs.getMetaData(); //获取表结构信息
//获取列数
int cols = rs.getMetaData().getColumnCount();
//打印列名
for(int i=1; i<=cols; i++) {
System.out.print(md.getColumnName(i)+"\t");
}
//打印数据
while(rs.next()) {
System.out.println();
for(int i=1; i<=cols; i++) {
System.out.print(rs.getString(i)+"\t\t");
}
}
}
}