JDBC在做项目初期连接数据库常用到,如果不把步骤和原理弄懂,在接触mybatis或者hibernate框架操作数据库时会对其操作原理十分懵。
主要原因是:不弄懂步骤老是写jdbc时便要网上查步骤,这就很烦。
于是笔者便查API文档把它注释了一下,方便大家理解流程,做了一个插入数据的例子(在javaweb中表单上获取数据插入数据库,用的是servlet的doGet()方法)
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.*;
public class FirstServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String username = request.getParameter("username");
String password = request.getParameter("password");
//**只要jdbc连接操作的看下面代码就行**
final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
final String DB_URL = "jdbc:mysql://localhost:3306/sqldb";
//'sqldb'这个参数 为你所要连接的数据库名,这4个final String是连接你的数据库所需参数
final String USER = "root";
final String PWD = "";
Connection conn = null;
//Connection接口 -与特定数据库的连接(会话)。在连接上下文中执行 SQL 语句并返回结果。
Statement stmt = null;
//接口 Statement-用于执行静态 SQL 语句并返回它所生成结果的对象。
try {
//步骤1:注册驱动
Class.forName("com.mysql.jdbc.Driver");
//步骤2:连接数据库
conn = DriverManager.getConnection(DB_URL,USER,PWD);
//DriverManager类 管理一组 JDBC 驱动程序的基本服务 getConnection()试图建立到给定数据库 URL 的连接。
//步骤3:创建执行SQL的语句
String sql = "insert into user " + "values('" + username + "','" + password + "')";
System.out.println(sql);
stmt = conn.createStatement();
/* createStatement,创建一个 Statement 对象,不带参数的 SQL 语句通常使用 Statement 对象执行。
* 如果多次执行相同的 SQL 语句,使用 PreparedStatement对象可能更有效。
* 这里也可以创建一个 PreparedStatement 对象来将参数化的 SQL 语句发送到数据库。
* 带有 IN 参数或不带有 IN 参数的 SQL 语句都可以被预编译并存储在 PreparedStatement 对象中。
* 然后可以有效地使用此对象来多次执行该语句。
*/
//步骤4:执行SQL语句
stmt.executeUpdate(sql);
/*
*执行给定 SQL 语句,该语句可能为 INSERT、 UPDATE 或 DELETE 语句
*查询操作该用executeQuery,该语句返回单个 ResultSet 对象,可以用此对象进行遍历查询结果
*/
//步骤5: 处理结果,select操作返回数据处理
System.out.println("插入语句操作。。");
} catch(Exception e){
e.printStackTrace();
}finally{
//步骤6:释放资源
try{
if(stmt!=null)
stmt.close();
}catch(SQLException se2){
try{
if(conn!=null)
conn.close();
}catch(SQLException se){
se.printStackTrace();
}
}
}
}
}
说明;我在表单中传的数据为username=xc ,password=123
form表单代码:
<form action="../FirstServlet" method="get">
用户名:<input type="text" name="username"> <br>
密码:<input type="password" name="password"><br>
<input type="submit" name="登录">
</form>
数据库中查询user表(插入数据的表)