JavaWeb学习经验与笔记-1
本帖最后由 Eacho 于 2017-11-26 01:41 编辑接着上次的帖子https://www.52pojie.cn/thread-667424-1-1.html
很抱歉JavaSE部分的笔记丢失了… 因为是很久之前的学的,那台电脑在我一次重装系统的时候,硬盘坏了…然后顺便就换了台电脑很难受,我里面还有好多文件都在,然后拿去数据恢复,要1000多,也没舍得这个钱…哈哈哈
但是还好,后面JDBC后面的,我有放在移动硬盘上,稍微整理了一下Emmm..注意啊,这些帖子并不是教程,只是笔记,所以,新手朋友们可能看不懂,不过没关系,你们可以学了一段时间后,再回来看看如果你们觉得笔记记的还可以,也可以复制到自己的笔记上
JDBC-1===============================================1.使用Driver获取数据库连接,也就是ConnectionDriverdriver=(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获取数据库连接,也就是ConnectionClass.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参数应该为aaSELECT id FROM tableName:显示查询出来的字段为:id,所以columnLabel参数应该为id所以这个columnLabel要用显示查询出来的字段4.用完这些请把资源都关闭,这里要关闭的资源有ResultSet,Statement,Connection关闭顺序就好像我们穿衣服一样,Connection是内衣,Statement是线衫,ResultSet是外套要从后面穿的开始脱,所以应该先关闭ResultSet,在关闭Statement,在关闭Connectiontry{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,numpreSta=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(); 接下来我们做一个执行增删改通用的functionpublic 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赋值1Somethingobject=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开始
纯手写,写的有点乱,哈哈哈.. 但是还是很不容易的,要是有个好评自然更好啦 66666看看 差评,兄弟.自己弄个博客记录把.没必要在这发.. 好评,把开发中遇到的注意事项记下来,是个好习惯。毕竟好记性不如烂笔头。留下来学习! 这个是分层开发的基础,对后面学习框架帮助挺大。 学习历程,可以可以 java新手报道 我用的印象笔记,88开了一年会员,所有的代码全部上传过去了,搜索方便,jar包,文档,全部上传了 血玫瑰 发表于 2017-11-26 05:15
差评,兄弟.自己弄个博客记录把.没必要在这发..
博客也有,但是那都是我写日记的一些东西……哈哈哈
页:
[1]