1、加载驱动
1 Class.forNmae("com.mysql.jdbc.Driver"); 2 3 /* 4 Class.forName(xxx.xx.xx) 返回的是一个类 5 Class.forName(xxx.xx.xx);的作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段 6 */
2、获取数据库链接
1 Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test2","root","root");
3、预定义sql容器,并且盛放sql语句
1 String sql = "insert into t_user(user_name,passwd,name) values(?,?,?)"; 2 PreparedStatement preparedStatement = connection.prepareStatement(sql); 3 4 /* 5 Statement:用于执行静态 SQL 语句并返回它所生成结果的对象。只能执行一次 6 PreparedStatement:表示预编译的 SQL 语句的对象。SQL 语句被预编译并存储在 PreparedStatement 对象中。然后可以使用此对象多次高效地执行该语句 8 */
4、为sql语句中的?赋值
1 preparedStatement.setString(1,user.getUserName()); 2 preparedStatement.setString(2,user.getPassword()); 3 preparedStatement.setString(3,user.getName()); 4 5 /* 6 set数据类型() 我们要根据数据库中字段的具体类型调用对应的方法 , 7 varchar 对应 String, int 对应 Int ,bigint 对应 long 8 参数1 为?的需要 1表示为第一个?赋值 9 参数2 这个?的具体数据内容的数据来自当前方法的参数 10 注意:有几个问号,就需要有几行赋值,并且序号要与?一一对应 11 */
5、执行SQL语句
1 preparedStatement.execute();
6、关闭数据,数据库资源
1 import java.sql.Connection; 2 import java.sql.DriverManager; 3 import java.sql.PreparedStatement; 4 import java.sql.SQLException; 5 6 public class UserDao { 7 8 Connection connection = null; 9 PreparedStatement preparedStatement=null; 10 /* 11 * 完成用户添加的数据库持久化方法 12 * user 需要被添加到数据库中的用户对象 13 * */ 14 public void insertUser(User user){ 15 try { 16 //1 加载驱动,通知JDBC我们即将链接什么数据库 17 18 Class.forName("com.mysql.jdbc.Driver"); 19 20 //2 获取数据库链接 21 /* 22 * 参数1: 23 * jdbc:mysql:// 协议名称 24 * 127.0.0.1 <=> localhost 为需要链接的数据库所在的ip地址 25 * 3306 为数据库端口号 26 * test2 是所需要链接的具体的数据库的库名 27 * 参数2: 28 * 链接数据库时候数据库的用户名 29 * 参数3: 30 * 链接数据库时候数据库的密码 31 * */ 32 33 connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test2","root","root"); 34 35 36 String sql = "insert into t_user(user_name,passwd,name) values(?,?,?)"; //定义sql语句 ?是占位符,需要后期动态为问号赋值 37 38 //3 定义sql容器,并装载sql语句 39 40 preparedStatement = connection.prepareStatement(sql); 41 42 //4 为语句中的?赋值 可选操作步骤 如果语句中没有问号则不需要赋值 43 /* 44 * set数据类型() 我们要根据数据库中字段的具体类型调用对应的方法 , varchar 对应 String, int 对应 Int ,bigint 对应 long 45 * 参数1 为?的需要 1表示为第一个?赋值 46 * 参数2 这个?的具体数据内容的数据来自当前方法的参数 47 * 注意:有几个问号,就需要有几行赋值,并且序号要与?一一对应 48 * */ 49 50 preparedStatement.setString(1,user.getUserName()); 51 preparedStatement.setString(2,user.getPassword()); 52 preparedStatement.setString(3,user.getName()); 53 54 //5 执行sql语句 55 preparedStatement.execute(); 56 57 } catch (ClassNotFoundException e) { 58 e.printStackTrace(); 59 } catch (SQLException throwables) { 60 throwables.printStackTrace(); 61 }finally { 62 if (preparedStatement != null) 63 { 64 try { 65 preparedStatement.close(); 66 } catch (SQLException throwables) { 67 throwables.printStackTrace(); 68 } 69 } 70 if (connection != null) 71 { 72 try { 73 connection.close(); 74 } catch (SQLException throwables) { 75 throwables.printStackTrace(); 76 } 77 } 78 } 79 } 80 }