在聊天室和论坛web开发中都会用到数据库来保存用户的相关信息, 所以JDBC就成了不可或缺的环节。下面对JDBC中对数据的简单增、删、改、查 进行一下总结。
JDBC编程的第一步就是连接数据库。这里需要先导入一个sql包(附件中是连接mysql的文件包)。接下来就是在java代码中实现与数据库的连接。
public static Connection getConnection(){ Connection con = null ; try { Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection("jdbc:mysql://localhost:3306/learning","root"," "); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return con; }
需要说明的是 Class.forName();中传入的是Driver类在包中的位置,具体参数应该有导入的jar来定。而在DriverManager.getConnection()中传入的三个参数分别是database的url、账号(如果数据库中只有一个默认用户,那么就是root) 和访问密码。其中URL中的learning是指使用的数据库(因为笔者尚在学习阶段,就直接取learning)。
接下来就是对数据库中的数据进行访问了。主要会用到三个类:Statement (用于获取数据库中的数据)、PrepareStatement类(一般用于对数据库中的数据进行操作),ResultSet类(数据库返回数据的封装类)。
获取数据库中数据代码:
private static String sql = "select * from tbl_user";//对数据库的操作指令,与mysql语句相同 public static void showRes(){ Connection con = getConnection(); try { Statement sta = con.createStatement(); ResultSet res = sta.executeQuery(sql);//executeQuery会返回一个set集合,封装有数据库中的数据 while (res.next()){ System.out.print("id="+res.getInt("id")); System.out.print(" name="+res.getString("name")); System.out.print(" email="+res.getString("email")); System.out.println(); } con.close();//关闭连接 } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
插入(添加)数据库中数据的方法:
private static String insert = "insert into tbl_user (name,password,email) "+ "values (?,?,?)"; /** * 向数据库中插入一条语句的方法 * @param name 插入语句的名称 * @param password 插入语句的账号 * @param email 插入语句的Email * @throws SQLException */ public static void insertMes(Connection con,String name,String password,String email) throws SQLException{ java.sql.PreparedStatement ps = con.prepareStatement(insert); ps.setString(1, name); ps.setString(2, password); ps.setString(3, email); int num = ps.executeUpdate(); System.out.println("插入了"+num+" 条语句"); }
在sql指令insert中出现了‘?’。这是一个占位符,可以是sql语句更具有通用性。后面的ps.setString()代码便是对这三个占位符表示的数据进行设置(如果是int型的数据,这调用setInt方法,以此类推)。
修改和删除数据的代码和插入类似,只需用修改sql语句就行了。
private static String insertAddre = "insert into tbl_adress (id,city,country,user_id) "+ "values (?,?,?,?)"; /** * 向地址表中添加一条记录 * @param city * @param country * @param user_id * @throws SQLException */ private static void insertAddre(Connection con,int id,String city,String country,String user_id) throws SQLException{ java.sql.PreparedStatement ps = con.prepareStatement(insertAddre); ps.setInt(1, id); ps.setString(2, city); ps.setString(3, country); ps.setString(4, user_id); int num = ps.executeUpdate(); System.out.println("插入了"+num+" 条语句"); }
private static String delete = "delete from tbl_user where name=?&&password=?"; /** * 删除数据库中的一天数 据 * @param name 删除数据的名称 * @param password 删除数据的密码 */ private static void deleteMes(String name,String password){ Connection con = getConnection(); try { java.sql.PreparedStatement ps = con.prepareStatement(delete); ps.setString(1, name); ps.setString(2, password); int num = ps.executeUpdate(); System.out.println("删除了"+num+" 条语句"); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } }