注意:连接之前先导入数据库Jar包!!
JDBC使用步骤:
第一步,加载驱动程序
java加载驱动需要用到反射机制
Class.forName(driverClass)
加载Mysql驱动:Class.forName("com.mysql.jdbc.Driver");
加载Oracle驱动:Class.forName("oracla.jdbc.OracleDriver");
第二步:获得数据库的连接
java.sql.Connection conn=DriverManager.getConnection(url,user,password);
通常建立三个常量代表,地址,用户名和密码
地址是由 jdbc 连接mysql 本机IP 默认端口 数据库名称组成的
private static final Stirng URL="jdbc:mysql://127.0.01:3306/mysql";
URL=“jdbc:oracle:thin:@127.0.0.1:1521:mysql”
private static final Stirng USER="root";
private static final String PASSWORD="root";
通常将第一步和第二步封装到一个工具类中,如下:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBUtil {
private static final String URL="jdbc:mysql://127.0.01:3306/courses";
private static final String USER="root";
private static final String PASSWORD="depp";
private static Connection conn = null;
static {
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(URL, USER, PASSWORD);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static Connection getConnection(){
return conn;
}
}
第三步:通过数据库的链接操作数据库,实现增删改查
从数据库中读取数据:
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery("SQL 语句");
判断是否获取到数据,返回一个boolean类型的值 :rs.next()
通过字段得到返回值:rs.getString("username");
代码示例:
Statement stmt=null;
ResultSet rs=null;
try {
stmt = conn.createStatement();
rs=stmt.executeQuery("select * from students");
while(rs.next()){
Student student = new Student();//必须new一个新对像,否则会出现空指针异常
student.setId(rs.getString("stuID"));
student.setName(rs.getString("stuName"));
student.setYear(rs.getString("stuYear"));
student.setNumber(rs.getString("stuNumber"));
student.setSex(rs.getString("stuSex"));
System.out.println(student.toString());
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
将数据保存到数据库中:
PreparedStatement ptmt=conn.preparesStatement(sql);
这句代码并没有执行编译sql语句,一直到ptmt.execute();才会编译sql语句
sql语句中的问号就是要保存到数据库中的数据
通过ptmt.setStirng(1,student.getID());来传入值,第一个参数代表第几个值,也就是第几个问号
代码示例:
Student student=new Student();//通常作为方法的形参
String sql=""+"INSERT students (stuID,stuName,stuYear,stuNumber,stuSex) "+
"VALUES(?,?,?,?,?)";
PreparedStatement ptmt;
try {
ptmt = conn.prepareStatement(sql);
ptmt.setString(1, student.getId());
ptmt.setString(2,student.getName());
ptmt.setString(3, student.getYear());
ptmt.setString(4, student.getNumber());
ptmt.setString(5, student.getSex());
ptmt.execute();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}