首页 > 代码库 > JAVA之JDBC的简单使用(Mysql)
JAVA之JDBC的简单使用(Mysql)
JDBC增删查改
昨天七七八八的关于Mysql的配置 和 基本使用也算是初步解决了,今天 抽空看了JAVA的JDBC(JAVA DATA BASE CONNECTION)我也不知道我全称拼写对对不对??,笔者英文水平太渣渣。
具体的关于解释jdbc的东东在本文就不阐述了,网上百度一大堆,本文主要记录 实现过程 中的关键点和小坑。
首先 就要把这个问题的解决方法给抛出来
PreparedStatement 的占位符使用 :
PreparedStatement是Statement的改良版,具有预编译功能,方便使用,运行速度快。
可以通过?占位符把字段值替换,之后通过setXXX方法,注入字段值。
但是?占位符只能替换字段值,不能替换表名、字段名或者其他关键词。
!!!!!!!!!这是个坑啊?? ,笔者以为占位符是 没有限制的 使用 ,比如在查询语句中使用 "select * from student where ?=?"
这里笔者想着 pstatement.setString(1,"id");pstatement.setString(2,3);就可以实现id=3的查询过滤,然后就没有然后了,困扰了老纸半个多小时。。。。。。
下面,记录实现过程,还是直接贴代码记录:
Jdbc_manage 负责 驱动的加载 数据库的连接
1 import java.sql.*; 2 3 import com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException; 4 5 public class Jdbc_manage { 6 7 private static Connection connection = null; 8 9 public static final String Driver = "com.mysql.jdbc.Driver"; 10 public static final String URL = "jdbc:mysql://47.93.250.19:3306/121sushe"; 11 public static final String USER = "root"; 12 public static final String PASSWORD = "zy1314521.."; 13 14 // 方便其他类获取一个 connection 实例的引用 15 public static Connection get_connection(){ 16 17 try { 18 //使用反射机制 加载驱动 19 Class.forName(Driver); 20 21 try { 22 // 这里不知道为什么需要一个强制的类型转换 23 connection = (Connection)DriverManager.getConnection(URL,USER,PASSWORD); 24 System.out.println("Mysql连接成功!"); 25 26 // 这里的测试 证明 连接正常 获取数据正常 27 // try { 28 // Statement statement = connection.createStatement(); 29 // ResultSet resultSet = statement.executeQuery("select * from chengyuan"); 30 // resultSet.next(); 31 // System.out.println("->" + resultSet.getString("name")); 32 // } catch (Exception e) { 33 // // TODO: handle exception 34 // System.out.println("初始查询失败"); 35 // } 36 37 } catch (MySQLSyntaxErrorException e) { 38 // TODO: handle exception 39 System.out.println("Mysql连接失败"); 40 e.printStackTrace(); 41 } 42 43 } catch (Exception e) { 44 // TODO: handle exception 45 System.out.println("驱动加载失败"); 46 } 47 return connection; 48 49 } 50 51 public static void close_connection(){ 52 53 try { 54 55 if(connection != null && !connection.isClosed()){ 56 connection.close(); 57 } 58 59 } catch (Exception e) { 60 // TODO: handle exception 61 System.out.println("关闭connection异常"); 62 } 63 64 } 65 66 67 }
然后是 Use_mysql类的 ,这个类负责 增删查改 和 显示表中数据
1 import java.sql.Connection; 2 import java.sql.PreparedStatement; 3 import java.sql.ResultSet; 4 5 public class Use_mysql { 6 7 //接收三个参数 分别对应表中的id name age 8 public boolean insert(int id,String name,int age){ 9 boolean flag=false; 10 Connection connection = null; 11 PreparedStatement pStatement = null; 12 13 try { 14 15 String sql = "insert into chengyuan value(?,?,?)"; 16 connection = Jdbc_manage.get_connection(); 17 pStatement = connection.prepareStatement(sql); 18 pStatement.setInt(1, id); 19 pStatement.setString(2, name); 20 pStatement.setInt(3,age); 21 int i = 0; 22 i = pStatement.executeUpdate(); // 执行该条更新 23 if(i!=0){ 24 flag = true; 25 } 26 27 try { 28 pStatement.close(); 29 connection.close(); 30 31 } catch (Exception e) { 32 // TODO: handle exception 33 System.out.println("关闭失败"); 34 } 35 36 } catch (Exception e) { 37 // TODO: handle exception 38 System.out.println("添加行 异常"); 39 e.printStackTrace(); 40 } 41 return flag; 42 } 43 44 //接收1个 id 参数 45 public boolean delete(int id){ 46 boolean flag=false; 47 Connection connection = null; 48 PreparedStatement pStatement = null; 49 50 try { 51 String sql = "delete from chengyuan where id=?"; 52 connection = Jdbc_manage.get_connection(); 53 pStatement = connection.prepareStatement(sql); 54 pStatement.setInt(1, id); //删除第 id 行 55 int i = 0; 56 i = pStatement.executeUpdate(); 57 if(i!=0){ 58 flag = true; 59 } 60 61 try { 62 pStatement.close(); 63 connection.close(); 64 65 } catch (Exception e) { 66 // TODO: handle exception 67 System.out.println("关闭失败"); 68 } 69 70 } catch (Exception e) { 71 // TODO: handle exception 72 System.out.println("删除行 异常"); 73 e.printStackTrace(); 74 } 75 return flag; 76 77 } 78 79 public boolean select(int id){ 80 boolean flag=false; 81 Connection connection = null; 82 PreparedStatement pStatement = null; 83 ResultSet rSet = null; //查询操作不同于 其他操作 ,会返回一个结果集 84 85 try { 86 String sql = "select * from chengyuan where id=?"; 87 connection = Jdbc_manage.get_connection(); 88 pStatement = connection.prepareStatement(sql); 89 pStatement.setInt(1, id); //查询 id 行 90 91 try { 92 93 rSet = pStatement.executeQuery(); 94 95 if(rSet.next()){ 96 flag = true; 97 rSet.previous(); 98 } 99 100 101 while(rSet.next()){ 102 System.out.println(rSet.getString("id") + "-----" + rSet.getString("name") 103 + "-----" + rSet.getString("age")); 104 } 105 106 try { 107 108 rSet.close(); 109 pStatement.close(); 110 connection.close(); 111 112 } catch (Exception e) { 113 // TODO: handle exception 114 System.out.println("关闭失败"); 115 } 116 117 } catch (Exception e) { 118 // TODO: handle exception 119 System.out.println("结果集异常"); 120 e.printStackTrace(); 121 } 122 123 } catch (Exception e) { 124 // TODO: handle exception 125 System.out.println("查询 异常"); 126 e.printStackTrace(); 127 } 128 return flag; 129 130 } 131 132 //接收3个参数 修改第 id 行的 name和age 133 public boolean update(int id,String name,int age){ 134 boolean flag=false; 135 Connection connection = null; 136 PreparedStatement pStatement = null; 137 138 try { 139 String sql = "update chengyuan set name=?,age=? where id=?"; 140 connection = Jdbc_manage.get_connection(); 141 pStatement = connection.prepareStatement(sql); 142 pStatement.setString(1, name); 143 pStatement.setInt(2, age); 144 pStatement.setInt(3, id); 145 146 int i = 0; 147 i = pStatement.executeUpdate(); 148 if(i!=0){ 149 flag = true; 150 } 151 152 try { 153 pStatement.close(); 154 connection.close(); 155 156 } catch (Exception e) { 157 // TODO: handle exception 158 System.out.println("关闭失败"); 159 } 160 161 } catch (Exception e) { 162 // TODO: handle exception 163 System.out.println("修改异常"); 164 e.printStackTrace(); 165 } 166 return flag; 167 168 } 169 170 //显示所有数据 171 public boolean show(){ 172 boolean flag=false; 173 Connection connection = null; 174 PreparedStatement pStatement = null; 175 ResultSet rSet = null; 176 177 try { 178 String sql = "select * from chengyuan"; 179 connection = Jdbc_manage.get_connection(); 180 pStatement = connection.prepareStatement(sql); 181 182 try { 183 184 rSet = pStatement.executeQuery(); 185 186 if(rSet.next()){ 187 flag = true; 188 rSet.previous(); 189 } 190 191 while(rSet.next()){ 192 System.out.println(rSet.getString("id") + "-----" + rSet.getString("name") 193 + "-----" + rSet.getString("age")); 194 } 195 196 } catch (Exception e) { 197 // TODO: handle exception 198 System.out.println("结果集异常"); 199 e.printStackTrace(); 200 } 201 202 } catch (Exception e) { 203 // TODO: handle exception 204 System.out.println("查询 异常"); 205 e.printStackTrace(); 206 } 207 return flag; 208 } 209 210 211 }
然后是 Main:
1 import java.util.Scanner; 2 3 public class Main { 4 5 public static void main(String[] args) { 6 // TODO Auto-generated method stub 7 8 Use_mysql test = new Use_mysql(); 9 Scanner keyboard = new Scanner(System.in); 10 while(true){ 11 Main.caidan(); 12 System.out.println("请输入"); 13 int input = 0; 14 input = keyboard.nextInt(); 15 if(input!=0){ 16 Main.xuanze(test, input); 17 Jdbc_manage.close_connection(); 18 }else{ 19 System.exit(0); 20 } 21 } 22 23 24 } 25 26 public static void xuanze(Use_mysql test,int n){ 27 Scanner pppp = new Scanner(System.in); 28 switch(n){ 29 case 1: 30 int id1,age1; 31 String name1; 32 System.out.println("请以此输入你要添加的行的 id"); 33 id1 = pppp.nextInt(); 34 pppp.nextLine(); 35 System.out.println("请以此输入你要添加的行的 name"); 36 name1 = pppp.next(); 37 pppp.nextLine(); 38 System.out.println("请以此输入你要添加的行的 age"); 39 age1 = pppp.nextInt(); 40 pppp.nextLine(); 41 if(test.insert(id1, name1, age1)){ 42 System.out.println("添加成功"); 43 } 44 break; 45 case 2: 46 int id2; 47 System.out.println("请输入你要删除的行对应的id"); 48 id2 = pppp.nextInt(); 49 if(test.delete(id2)){ 50 System.out.println("删除成功"); 51 } 52 break; 53 case 3: 54 int id3; 55 System.out.println("请输入你要查询的行对应的id"); 56 id3 = pppp.nextInt(); 57 if(test.select(id3)){ 58 System.out.println("查询成功"); 59 } 60 break; 61 case 4: 62 int id4,age4; 63 String name4; 64 System.out.println("请输入你要修改的行对应的id"); 65 id4 = pppp.nextInt(); 66 pppp.nextLine(); 67 System.out.println("输入修改此行的name age"); 68 name4 = pppp.next(); 69 pppp.nextLine(); 70 age4 = pppp.nextInt(); 71 if(test.update(id4, name4, age4)){ 72 System.out.println("修改成功"); 73 } 74 break; 75 case 5: 76 System.out.println("当前表中数据为:"); 77 if(test.show()){ 78 System.out.println("显示完毕"); 79 } 80 break; 81 default :System.out.println("输入指令有误");break; 82 83 } 84 } 85 86 public static void caidan(){ 87 System.out.println("******输入0结束*******"); 88 System.out.println("*****1.插入一条数据*****"); 89 System.out.println("*****2.删除一条数据*****"); 90 System.out.println("*****3.查询一条数据*****"); 91 System.out.println("*****4.修改一条数据*****"); 92 System.out.println("*****5.显示所有数据*****"); 93 } 94 95 }
OK 成功。
当然,可能还有很多 没有发现的问题,如果你发现了 希望你可以在评论区留言,共同进步??
JAVA之JDBC的简单使用(Mysql)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。