1、JDBC访问数据库的过程
①加载JDBC驱动程序
Class.forName("com.mysql.jdbc.Driver");
②提供JDBC的URL
jdbc:mysql://主机名:端口号/数据库名
主机名:主机的IP(localhost或127.0.0.1)
端口号:3306(MySQL的默认值)
数据库名:需要连接的数据库名称
String url = "jdbc:mysql://127.0.0.1/DataBaseName";
String user = "root";
String pw = "123";
③与数据库建立连接
Connection conn = DriverManager.getConnection(url,user,pw);
④创建Statement实例
Statement实例:用于执行静态SQL语句
Statement stmt = conn.createStatement();
PreparedStatement实例:用于执行动态SQL语句
PreparedStatement pstmt = conn.prepareStatement(sql);
⑤执行SQL语句并返回结果
——Execute DDL(数据定义 create)
——ExecuteQuery DQL (select)
——ExecuteUpdate DML (insert update delete)
——execute 方法返回一个 boolean 值,以指示第一个结果的形式
true表示第一个返回值是一个ResultSet对象;
false表示这是一个更新个数或者没有结果集。
⑥处理数据库返回的结果
java.sql.ResultSet接口类似于记录表,可通过该接口的实例获得检索结果集。
ResultSet对象维持一个指向当前行的指针,最初这个指针指向第一条记录之前。
——next():可以使当前指针向后移动一行,该方法有一个boolean型的返回值,
若为true,则表示成功移动到下一行;若返回false,则表示没有下一行。
——getXXX():可以从某一列中获得结果。
其中XXX是jdbc中的java数据类型,如getInt()、getString()等。
该方法需要指定检索的列编号或列名称。
示例
——询teaching数据库中的student表并在页面中显示查询结果:
//实例化Statement
Statement stmt=conn.createStatement();
//执行select语句,并将结果存储到记录集rs中
ResultSet rs=stmt.executeQuery("select * from student");
//遍历记录集
while (rs.next()) {
int id = rs.getInt(1);可以通过列索引值来获取
String s = rs.getString("username");也可以通过列名来获取
}
——通过ResuleSet实例,并不仅可以获得满足查询条件的记录,还可以获得数据表的相关信息,例如每一列的名称,列的数量等。
ResultSetMetaData rsmd=rs.getMetaData();
for (int i=1;i<=rsmd.getColumnCount();i++){
out.print(rsmd.getColumnName(i));
}
⑦断开数据