吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2823|回复: 8
收起左侧

[Java 转载] JavaWeb学习经验与笔记-1

[复制链接]
Eacho 发表于 2017-11-26 01:39
本帖最后由 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.propertieseclipse编译时会把它放到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.用完这些请把资源都关闭,这里要关闭的资源有ResultSetStatementConnection
关闭顺序就好像我们穿衣服一样,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.jarcommons-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;
该类里有私有成员abcgetAbcsetAbc方法
如果要用beanutilsa赋值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开始

纯手写,写的有点乱,哈哈哈.. 但是还是很不容易的,要是有个好评自然更好啦

免费评分

参与人数 1热心值 +1 收起 理由
拾柒丶 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

大天使殿下 发表于 2017-11-26 05:08
66666看看
血玫瑰 发表于 2017-11-26 05:15
差评,兄弟.自己弄个博客记录把.没必要在这发..
sxtylhg 发表于 2017-11-26 08:24
好评,把开发中遇到的注意事项记下来,是个好习惯。毕竟好记性不如烂笔头。留下来学习!
巨无霸 发表于 2017-11-26 08:42
这个是分层开发的基础,对后面学习框架帮助挺大。
chengling86 发表于 2017-11-26 09:17
学习历程,可以可以
祖圣无飞 发表于 2017-11-26 10:01
java新手报道
纯洁的黑 发表于 2017-11-26 11:25
我用的印象笔记,88开了一年会员,所有的代码全部上传过去了,搜索方便,jar包,文档,全部上传了
 楼主| Eacho 发表于 2017-11-26 12:30 来自手机
血玫瑰 发表于 2017-11-26 05:15
差评,兄弟.自己弄个博客记录把.没必要在这发..

博客也有,但是那都是我写日记的一些东西……哈哈哈
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-15 22:19

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表