在实际项目中,网页通常要与数据库进行数据的交互,数据库在Web的开发中占有很大的地位。因此有了JDBC(Java Data Base Connectivity)这种通过java代码访问数据库的技术.。它提供了一系列的API,让Java语言编写的代码连接数据库,对数据库进行添加、删除、修改、查询等操作。
JDBC相关的API存放在java.sql包中,主要包括以下类和接口(更多请参考JDK的API文档)
(1)java.sql.Connection,负责连接数据库。
(2)java.sql.Statemetn,负责执行数据库的SQL语句。
(3)java.sql.ResultSet,负责存放查询结果。
连接不同的数据库,使用不同的数据库驱动包。(本文以MySql驱动为例)
进行以下代码编写前,现在项目中添加驱动程序包,用idea则添加依赖。
1.指定驱动程序(数据库类型不同,驱动不同)
Class.forName(“驱动名”);
2. 获取数据库连接
DriverManager.getConnection(“url”,“用户名”,“密码”);
3.获得sql语句执行对象
Statement stat=conn.CreateStatement();
4.定义sql语句
String sql=“sql 语句”;
5.定义一个变量ResultSet变量存放查询结果
ResultSet rs=stat.executeQuery(sql);
6.定义一个变量来存储sql语句执行受影响的行数(当执行修改数据库操作时需要这条语句)
int i=stat.executeUpdate(sql);
7.关闭数据库连接
stat.close();
conn.close();
<%
//1、指定驱动
Class.forName("com.mysql.jdbc.Driver");
//2、获取连接
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc", "root", "root");
//定义一条输出语句验证是否连接成功
out.println("连接成功");
//3、创建一个sql语句执行对象
Statement statement = connection.createStatement();
//4、定义sql语句
String sql = "INSERT INTO user1(id,user,age) VALUES('4','xiaoming','30')";
//它返回一个正型,意思是这条sql语句执行受影响的行数,即成功添加的行数
int i = statement.executeUpdate(sql);
out.println(i);
statement.close();
connection.close();
%>
//4、定义删除的sql语句
String sql = "DELETE FROM user1 WHERE id='4'";
//4、定义修改数据库的sql语句
String sql = "UPDATE user1 SET age='99' WHERE id='1'";
//4、//定义sql语句
String sql = "SELECT user,age FROM user1 WHERE id='1'";
//5、定义一个ResultSet类型的变量存储查询结果
ResultSet resultSet = statement.executeQuery(sql);
//6、用游标将查询结果取出来
while (resultSet.next()) {
//定义变量来存储每一列中的数据
String user = resultSet.getString("user");
String age = resultSet.getString("age");
//将取出的值打印出来
out.println(user + "" + age);
}
注意:
(1)查询数据比上面的增删改,多了对结果集的处理(ResultSet),以及用游标将结果集中的数据取出。
(2)游标的概念:游标是在ResultSet中一个可以移动的指针,它指向一行数据,初始游标指向第一行的前一行,。“rs.next()”方法可以将游标移动到下一行,其返回值是一个布尔类型,如果下一行有数据则返回true,结合while循环可将结果集中的数据取出来。
//运用了PrepareStatement
String sql="INSERT INTO user1(id,user,age) VALUES(?,?,?) ";
PreparedStatement preparedStatement=connection.prepareStatement(sql);
//用参数代替第n个“?”
preparedStatement.setString(1,id);
preparedStatement.setString(2,user);
preparedStatement.setString(3,age);
int i=preparedStatement.executeUpdate();
out.println("成功添加" + i + "行");
preparedStatement.close();
connection.close();