本帖最后由 Eacho 于 2017-11-26 01:41 编辑
接着上次的帖子https://www.52pojie.cn/thread-667424-1-1.html
很抱歉JavaSE部分的笔记丢失了… 因为是很久之前的学的,那台电脑在我一次重装系统的时候,硬盘坏了…然后顺便就换了台电脑 很难受,我里面还有好多文件都在,然后拿去数据恢复,要1000多,也没舍得这个钱…哈哈哈
但是还好,后面JDBC后面的,我有放在移动硬盘上,稍微整理了一下 Emmm..注意啊,这些帖子并不是教程,只是笔记,所以,新手朋友们可能看不懂,不过没关系,你们可以学了一段时间后,再回来看看 如果你们觉得笔记记的还可以,也可以复制到自己的笔记上
JDBC-1=============================================== 1.使用Driver获取数据库连接,也就是Connection Driverdriver=(Driver)Class.forName("com.mysql.jdbc.Driver").newInstance();Propertiesinfo=new Properties();info.put("user",user);//把数据库帐号放入info.put("password",password);//把数据库密码放入Connection conn=driver.connect("jdbc:mysql://localhost:3306/school", info); 记住,conn用完后要用conn.close();关闭 2.获取properties配置文件内容 把properties文件放在src目录下,编译好后,eclipse编译时会把它放到bin目录下 比如你的文件在src/xxx.properties,eclipse编译时会把它放到bin/xxx.properties 再比如该文件在src/study.jdbc包下,编译好之后就是bin/study/jdbc/xxx.properties 所以这是properties文件的位置,后面创建Properties对象需要传入,传入的时候,不需要带上bin,因为他是以bin为根目录 以第二个为例,传入进去的properties文件url只需要/study/jdbc/xxx.properties就可以了,’/’这个不能省略哦 InputStreamin=Object.class.getResourceAsStream(propertiesURL);Propertiesproperties=new Properties();properties.load(in); JDBC-2============================================ 1.用DriverManager获取数据库连接,也就是Connection Class.forName("com.mysql.jdbc.Driver")//注册驱动 /* 这里为什么只要forName一下就能直接用DriverManager获取链接呢? 因为在com.mysql.jdbc.Driver这个类中有一个静态代码块 static { try{ java.sql.DriverManager.registerDriver(newDriver()); }catch (SQLException E) { thrownew RuntimeException("Can't register driver!"); } } 当该类被forName时就被载入到内存了,而在java中当一个类被载入到内存时会执行他的静态代码块的 */ Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/school",user,password); 2.用Statement执行SQL语句 增删改语句:executeUpdate(); Statement sta=conn.createStatement();//先用conn创建一个Statement对象 sta.executeUpdate("INSERT INTO tableNameVALUES(1,2,3)");//执行增加语句 sta.executeUpdate("UPDATE tableName SETage=222 WHERE id=1");//执行修改语句 sta.executeUpdate("DELETE FROM tableNameWHERE id=1");//执行删除语句 3.使用ResultSet获取查询语句结果并get字段的值 ResultSet rs=sta.executeQuery("SELECTid as aa FROM tableName"); while(rs.next()){ String value=rs.getString("aa"); System.out.println(value); } 在这个查询语句中请注意ResultSet.getXXX(String columnLabel);这种代码 这里的columnLabel这个不是代表数据表中的列名,而是你SQL语句查询出来显示的那个列名,也叫!别名 比如有个数据表有id,name两个字段 SELECT id as aaFROM tableName:显示查询出来的字段为:aa,所以columnLabel参数应该为aa SELECT id FROM tableName:显示查询出来的字段为:id,所以columnLabel参数应该为id 所以这个columnLabel要用显示查询出来的字段 4.用完这些请把资源都关闭,这里要关闭的资源有ResultSet,Statement,Connection 关闭顺序就好像我们穿衣服一样,Connection是内衣,Statement是线衫,ResultSet是外套 要从后面穿的开始脱,所以应该先关闭ResultSet,在关闭Statement,在关闭Connection try{ if(ResultSet!=null)ResultSet.close; }catch (Exceptione) { e.printStackTrace(); } try{ if(Statement!=null)Statement.close; }catch (Exceptione) { e.printStackTrace(); } try{ if(Connection!=null)Connection.close; }catch (Exceptione) { e.printStackTrace(); } JDBC-3======================================= 用PreparedStatement替代Statement,他是Statement子接口 当我们在插入一条数据时,用Statement太麻烦了,我们要自己去拼接SQL语句 比如数据表字段为:id,name,age,sex几个字段,如果我们自己拼接SQL语句的话就应该这样做,就很麻烦 String sql="INSERT INTO tableNameVALUES("+id+",'"+name+"',"+age+",'"+sex+"')"; 所以,现在我们来用PreparedStatement来写这个插入程序 //首先我们传入一个SQL语句,这个语句里有几个问号,就代表说这些是你想用变量替代的值 String sql="INSERT INTO goods VALUES(?,?,?,?,?,?)";//id,typeId,name,price,img,num preSta=conn.prepareStatement(sql); //然后我们有setXxx方法,这个呢就代表替代的内容了,第一个参数是索引号 //第几个问号就填几,第二个参数是替代的值 preSta.setInt(1,777);preSta.setInt(2,9);preSta.setString(3,"testName");preSta.setString(4,"testPrice");preSta.setString(5,"testImg");preSta.setInt(6,10);preSta.executeUpdate(); 接下来我们做一个执行增删改通用的function public static voidUpdate(String sql,Object ... args){ Connection conn=null; PreparedStatement preSta=null; try { conn=getConn(); preSta=conn.prepareStatement(sql); for (inti = 0; i < args.length; i++) { preSta.setObject(i+1, args); } preSta.executeUpdate(); } catch (ClassNotFoundException | IOException| SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { releaseSource(null, preSta, conn); } } 2.Beanutils类的使用 1)环境:需要commons-beanutils-1.x.x.jar,commons-logging-1.x.jar两个jar包 2)下载地址:http://commons.apache.org/proper/commons-beanutils/ http://commons.apache.org/proper/commons-logging/3)先介绍两个方法 ①假设有个类Something,里面有一个私有成员private int abc; ②该类里有私有成员abc的getAbc,setAbc方法 ③如果要用beanutils给a赋值1 Somethingobject=new Something();BeanUtils.setProperty(object,“abc”, 1);所以,setProperty第二个参数呢,就是setXxx里后面那个Xxx第一个字符小写,其他不变的一个值 (基本是这样,也有可能有些get/set方法很奇怪,导致出现NoClassDefFoundError,其实只要按照标准的命名规范,一般是不会出问题的) get方法与上面差不多,只是少了第二个参数,多出了一个String返回值 String val=BeanUtils.getProperty(object, 1);
JDBC-4 小复习,与一些索引的初始值===================== PreparedStatement.setObject(int parameterIndex, Object x) parameterIndex:从1开始 ResultSetMetaData.getColumnLabel(int column) column:从1开始 ResultSet.getObject(int columnIndex) columnIndex:从1开始 List.get(int index) index:从0开始
纯手写,写的有点乱,哈哈哈.. 但是还是很不容易的,要是有个好评自然更好啦 |