课程设计项目购物网站的后台管理班级软件1307
学号
姓名刘帅
上课时间 2015.9.8——2015.9.18实训教师(签名)
辅导教师签名
一实训每日报告
第一天
Jdbc
Tes t 1packagecom.sun.jdbc;importjava.sql .Connection;importjava.sql .DriverManager;import java.sql .PreparedStatement;import java.sql .ResultSet;import java.sql .SQLException;publ ic classTest1{publ ic staticvoid main(String[] args)throws InstantiationException,
I l legalAccessException,ClassNotFoundException,SQLException{
//一个基本JDBC操作步骤
String className="com.mysql .jdbc.Driver";
Stringurl="jdbc:mysql ://127.0.0.1:3306/goodsdb?useUnicode=true&characterEncoding=utf8";
//1 创建数据库连接对象java.sql .Connection他是一个规范。具体的实现是由各数据库厂商提供的。
Class.forName(className).newInstance();//类加载。加载数据库的驱动类。
Connection conn=DriverManager.getConnection(url, "root", "") ;
// System.out.println(conn);
//2操作发送SQL。需要使用PreparedStatement对象。
String sql="select* from goods inner join types on goods.goodsType=types. id";
PreparedStatement pstat=conn.prepareStatement(sql);
//如果操作的增删改与查询执行的方法不同
//pstat.executeUpdate();
//3接收查询结果,接收数据库查询结果的对象叫结果集对象。 rs二维表格
ResultSet rs= pstat.executeQuery();whi le(rs.next()){
System.out.println("商品编号 "+rs.getInt("id"));
System.out.println(rs.getString("goodsName"));
System.out.println(rs.getFloat("goodsPrice"));
System.out.println(rs.getInt("goodsNum"));
System.out.println(rs.getInt("goodsType"));
System.out.println(rs.getString("type Name"));
System.out.println("---------------");
}
//4关闭
conn.close();
System.out.println("end");
}
}
Tes t 2packagecom.sun.jdbc;importjava.sql .Connection;importjava.sql .DriverManager;import java.sql .PreparedStatement;import java.sql .ResultSet;import java.sql .SQLException;publ ic classTest2{publ ic static void main(String[] args)throws InstantiationException,
I l legalAccessException,ClassNotFoundException,SQLException{
//一个基本JDBC操作步骤
String className="com.mysql .jdbc.Driver";
Stringurl="jdbc:mysql ://127.0.0.1:3306/goodsdb?useUnicode=true&characterEncoding=utf8";
//1 创建数据库连接对象java.sql .Connection他是一个规范。具体的实现是由各数据库厂商提供的。
Class.forName(className).newInstance();//类加载。加载数据库的驱动类。
Connection conn=DriverManager.getConnection(url, "root", "") ;
// System.out.println(conn);
//2操作发送SQL。需要使用PreparedStatement对象。
//在Pstat中可以使用参数。在SQL语句中使用号占位在
String sql="insert into goods(goodsName,goodsPrice,goodsNum,goodsType)values(?,?,?,?)";
PreparedStatement pstat=conn.prepareStatement(sql);
//如果操作的增删改与查询执行的方法不同pstat.setString(1, "手电筒");pstat.setFloat(2, 15.2f);pstat.setInt(3, 100);pstat.setInt(4,2);int i=pstat.executeUpdate();
System.out.println("操作影响了"+i+"行");
//4关闭conn.close();
System.out.println("end");
}
}
Utilspackagecom.sun.uti ls;importjava.sql .Connection;
importjava.sql .DriverManager;import java.sql .SQLException;
**
*数据库连接的工具类封装了数据库连接的创建和关闭的同一个线程中没关闭数据库连接之间获得数据库连接对象都是同一个。
*
*@author Boss
*
*/publ ic classConnectionUti ls {
//本地线程对象。一个线程中只有一个本地线程对象本地线程对象中可以存放一个对象。private staticThreadLocal<Connection>threadLocal=new
ThreadLocal<Connection>();private static final String CLASS_NAME="com.mysql .jdbc.Driver";private staticfinal String URL=
"jdbc:mysql ://127.0.0.1:3306/goodsdb?useUnicode=true&characterEncoding=utf8";static{try{
//类加载。加载数据库的驱动类。
Class.forName(CLASS_NAME).newInstance();
}catch(InstantiationException | I l legalAccessException
| ClassNotFoundException e) {e.pri ntSta ckTra ce();
}
}publ ic static Connection getConnection() throws SQLException{
Connection conn=threadLocal .get();//先从本地线程对象取数据库连接对象if(conn==nul l | | conn. isClosed()){//如果本地线程中没有连接对象
//创建连接
System.out.println("创建数据库连接 ");conn=DriverManager.getConnection(URL, "root", "");
//将连接放到本地线程threadLocal .set(conn);
}return conn;
}publ ic staticvoid closeConnection(){try{
Connection conn=getConnection();if(conn !=nul l&&!conn. isClosed()){conn.close();
}
}catch(SQLException e) {e.pri ntSta ckTra ce();
}final ly{threadLocal .set(nul l);
}
}
}
Te stpackage com.test;import java.sql .SQLException;import com.sun.uti ls.ConnectionUti ls;publ ic classTest {publ ic static void main(String[] args)throws SQLException{//TODO Auto-generated method stub
System.out.println(ConnectionUti ls.getConnection());System.out.println(ConnectionUti ls.getConnection());ConnectionUti ls.closeConnection();
System.out.println(ConnectionUti ls.getConnection());}
}
第二天
DBCP
Te stpackage com.test;importjava.sql .Connection;import com.uti ls.ConnectionUti ls;publ ic classTest {publ ic static void main(String[] args)throws Exception{//TODO Auto-generated method stub
Connection conn=ConnectionUti ls.getConnection();System.out.println(conn);
ConnectionUti ls.closeConnection();
}
}
Utilspackage com.uti ls;importjava. io. IOException;import java. io. InputStream;importjava.sql .Connection;import java.sql .SQLException;importjava.uti l .Properties;import javax.sql .DataSource;import org.apache.commons.dbcp.BasicDataSourceFactory;
**
*在这个类中连接对象的管理1获取连接对象2释放连接对象
*
*@author Boss
*/publ ic classConnectionUti ls {
//加载资源文件的内容private static Properties properties=new Properties();//加载资源文件的对象static{
//is对象是一个输入流对象try{
//is对象负责连接jdbc.properties文件
InputStream is=ConnectionUti ls.class
.getResourceAsStream("/jdbc.properties");
//将资源文件的内容加载到properties对象中properties. load(is);
//关闭is流对象is.close();
}catch(IOException e) {
//TODO Auto-generated catch blocke.pri ntSta ckTra ce();
}//加载资源文件
}private staticConnection conn=nul l;
**
*获取数据库连接的方法
*@return数据库连接对象
*@throws Exception
*/publ ic static Connection getConnection() throws Exception{
//连接的创建是有条件的连接不存在或连接已经关闭if (conn==nul l | | conn. isClosed()) {
//ds是数据源对象。在这个对象中管理和维护了大量数据库连接对象
DataSource ds=BasicDataSourceFactory.createDataSource(properties);conn=ds.getConnection();
}return conn;
}
**
*释放数据库连接的方法
*/publ ic staticvoid closeConnection() {try{
if (conn !=nul l&&!conn. isClosed()) {conn.close();
}
}catch(SQLException e) {e.pri ntSta ckTra ce();
}
}
}
Webroot
<%@page import="java.text.SimpleDateFormat"%>
<%@page language="java" import="java.uti l .*" pageEncoding="utf-8"%>
<%
String path=request.getContextPath();
String basePath=request.getScheme()+"://"+request.getServerNa me()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML4.01Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>MyJSP' index.jsp' starting page</title><meta http-equiv="pragma"content="no-cache">
<meta http-equiv="cache-control"content="no-cache">
<meta http-equiv="expires"content="0">
<meta http-equiv="keywords"content="keyword1,keyword2,keyword3">
<meta http-equiv="description"content="This is my page">
<!--
<l ink rel="stylesheet" type="text/css"href="styles.css">
-->
</head>
<body>
This is myJSP page.<br>
系统当前时间
<%
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date=new Date();
String str =sdf.format(date);out.println(str);
%>
</body>
</html>
第三天
Co m.d aogoodsDAO:packagecom.dao;importjava.sql .Connection;import java.sql .PreparedStatement;import java.sql .ResultSet;import java.uti l .ArrayList;importjava.uti l .List;importcom.domain.Goods;import com.domain.Types;import com.uti ls.ConnectionUti ls;
**
*封装针对Goods表CURD的操作
*
*@author Boss
*
*/publ ic class GoodsDAO{
**
*查询所有商品的方法
*
*@return所有商品信息的集合对象
*@throws Exception
*/publ ic List<Goods>findAl l() throws Exception{try{
List<Goods>goodsList=new ArrayList<Goods>();
Connection conn=ConnectionUti ls.getConnection();
String sql="select* from goods innerjoin types on goods.goodsType=types. id";
PreparedStatement pstat=conn.prepareStatement(sql);
ResultSet rs=pstat.executeQuery();whi le(rs.next()) {
Goods goods=new Goods();goods.setId(rs.getInt("id"));goods.setGoodsName(rs.getString("goodsName"));goods.setGoodsPrice(rs.getFloat("goodsPrice"));goods.setGoodsNum(rs.getInt("goodsNum"));
Types types=new Types();types.setId(rs.getInt("goodsType"));types.setTypeName(rs.getString("typeName"));goods.setTypes(types);goodsList.add(goods);
}
return goodsList;
}final ly{
ConnectionUti ls.closeConnection();}
}
}
Com.domain:
Goods:packagecom.domain;
**
*封装goods表的数据的对象
*@author Boss
*
*/publ icclassGoods {private int id;private String goodsName;private float goodsPrice;private int goodsNum;private Types types;//对应商品的类型publ ic Goods() {
//TODO Auto-generated constructor stub}publ ic intgetId() {return id;
}publ icvoidsetId(int id) {this. id=id;
}publ ic String getGoodsName() {return goodsName;
}publ ic void setGoodsName(String goodsName) {this.goodsName=goodsName;
}publ ic floatgetGoodsPrice() {return goodsPrice;
}publ ic void setGoodsPrice(float goodsPrice) {this.goodsPrice=goodsPrice;
}publ ic intgetGoodsNum() {return goodsNum;
}
昔日数据怎么样?昔日数据新上了湖北十堰云服务器,湖北十堰市IDC数据中心 母鸡采用e5 2651v2 SSD MLC企业硬盘 rdid5阵列为数据护航 100G高防 超出防御峰值空路由2小时 不限制流量。目前,国内湖北十堰云服务器,首月6折火热销售限量30台价格低至22元/月。(注意:之前有个xrhost.cn也叫昔日数据,已经打不开了,一看网站LOGO和名称为同一家,有一定风险,所以尽量不要选择...
pigyun怎么样?PIGYunData成立于2019年,2021是PIGYun为用户提供稳定服务的第三年,目前商家提供香港CN2线路、韩国cn2线路、美西CUVIP-9929、GIA等线路优质VPS,基于KVM虚拟架构,商家采用魔方云平台,所有的配置都可以弹性选择,目前商家推出了七月优惠,韩国和美国所有线路都有相应的促销,六折至八折,性价比不错。点击进入:PIGYun官方网站地址PIGYUN优惠...
PhotonVPS 服务商我们是不是已经很久没有见过?曾经也是相当的火爆的,我们中文习惯称作为饭桶VPS主机商。翻看之前的文章,在2015年之前也有较多商家的活动分享的,这几年由于服务商太多,乃至于有一些老牌的服务商都逐渐淡忘。这不有看到PhotonVPS商家发布促销活动。PhotonVPS 商家七月份推出首月半价Linux系统VPS主机,首月低至2.5美元,有洛杉矶、达拉斯、阿什本机房,除提供普...