0. 本周课程设计发布
Java课程设计
1. 本周学习总结
1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容。
数据库基本操作(目前为止主要介绍了表的基本操作)
创建表
CREATE TABLE students(
stuno VARCHAR(21),
name VARCHAR(255),
age VARCHAR(11)
);
查看mysql创建表:
SHOW CREATE table students;
查看表所有的列:
SHOW FULL COLUMNS from students;
查看表中已经录入的信息
SELECT * from students;
删除表
DROP TABLE students;
JDBC体系架构
2. 书面作业
1. MySQL数据库基本操作
建立数据库,将自己的姓名、学号作为一条记录插入。(截图,需出现自己的学号、姓名)
在自己建立的数据库上执行常见SQL语句(截图)-参考:实验任务书-题目1
2. 使用JDBC连接数据库与Statement
2.1 使用Statement操作数据库。(粘贴一段你认为比较有价值的代码,出现学号)
//201521123057
conn = DriverManager.getConnection(URL,userName,password);
Statement statement = conn.createStatement();
ResultSet resultSet = statement.executeQuery(sql);
while(resultSet.next()){
int id = resultSet.getInt("id");
String stuno = resultSet.getString("stuno");
Date date = resultSet.getDate("birthdate");
System.out.print("id="+id+" stuno="+stuno+" birthdate="+date);
2.2 使用JDBC操作数据库主要包含哪几个步骤?-参考:实验任务书-题目2
提供JDBC需要连接的URL
创建连接
conn = DriverManager.getConnection(URL,userName,password);
实例化Statement
Statement statement = conn.createStatement();
实例化结果集
ResultSet resultSet = statement.executeQuery(sql);
对结果集进行处理
while(resultSet.next()){...}
关闭资源
conn.close()
3. PreparedStatement与参数化查询
3.1 使用PreparedStatement根据用户指定的查询条件进行查询。(粘贴一段你认为比较有价值的代码,出现学号)
//201521123057
try {
con = DriverManager.getConnection(url,userName, password);
String strSql = "insert into students(stuno,...) values(?,...)";
pStatement = con.prepareStatement(strSql);
pStatement.setString(1, "20150111");
...
pStatement.close();
strSql = "select * from students where Id < ?";
pStatement = con.prepareStatement(strSql);
pStatement.setInt(1, 10);
rs = pStatement.executeQuery();
strSql = "select * from students";
rs = pStatement.executeQuery(strSql);
} catch (SQLException se) {
se.printStackTrace();
}
3.2 批量更新-批量插入1000个学生,统计整个操作所消耗的时间。(使用方法executeBatch)参考:实验任务书-题目3
con = DriverManager.getConnection(url,userName, password);
con.setAutoCommit(false);
String strSql = "insert into students(stuno,name,age) values(?,?,?)";
pStatement = con.prepareStatement(strSql);
long time=System.currentTimeMillis();
for(int i=0;i<1000;i++){
pStatement.setString(1, "201521123xxx");
pStatement.setString(2, "xxx");
pStatement.setString(3, "2x");
pStatement.addBatch();
}
pStatement.executeBatch();
con.commit();
long time1=System.currentTimeMillis();
System.out.println("插入1000条数据耗时:"+(time1-time)+"ms");
pStatement.close();
4. JDBCUtil与DAO
4.1 粘贴一段你认为比较有价值的代码,出现学号
//201521123057
JDBC工具:
public static Connection getConnection() throws SQLException {
Connection conn = null;
System.out.println("正在连接数据库...");
conn = DriverManager.getConnection(url, userName, password);
System.out.println("数据库已连接!");
return conn;
}
public static void closeConnection(Connection conn) {
System.out.println("正在释放所有资源...");
if (conn != null) {
try {
conn.close();
conn = null;
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
try {
conn = JDBCUtil.getConnection();
stat = conn.createStatement();
ResultSet rs = stat.executeQuery(sql);
while(rs.next()){
...
}
}catch (SQLException sqle) {
sqle.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}finally{
JDBCUtil.closeConnection(conn);
}
}
DAO(data access objects)模式:
public interface StudentDao {
public boolean writeStudent(Student student);
public Student readStudent(String name);
public List<Student> getAllStudents();
public void diplayAllStudent();
}
public class TestMain {
public static void main(String[] args) {
StudentDao sdm = new StudentDaoArrayImpl(50);
//StudentDao sdm = new StudenDaoListImpl();
//StudentDao sdm = new StudentDaoJDBCImpl();
...
}
public class StudentDaoArrayImpl implements StudentDao {
private Student[] students;
private int size=80;
//实现StudentDao中的各个抽象方法
}
4.2 使用DAO模式访问数据库有什么好处?参考:实验任务书-题目5
层次分明,思路清晰,方便维护
5. 使用数据库改造购物车系统
5.1 使用数据库改造以前的购物车系统(应有图形界面)。如果以前为完成购物车系统,可编写基于数据库的学生管理系统。包括对学生的增删改查,要求使用。
//学生管理系统
public class Person {
private int id;
private String name;
private int age;
}
gettter setter{
...
}
@Override
public String toString() {
return "Stu [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
//连接数据库
public static Connection getConnection() throws Exception{
String URL = "jdbc:mysql://localhost:3306/test";
String driverName = "com.mysql.jdbc.Driver";
String driverClass=null;
String sql = "select * from students";
InputStream in=
TestConnection.class.getClassLoader().getResourceAsStream("jdbc.properties");
Properties properties=new Properties();
properties.load(in);
driverClass=properties.getProperty("driverName");
Driver driver=(Driver)Class.forName(driverClass).newInstance();
Properties info=new Properties();
info.put("user", "root");
info.put("password", "123456");
Connection connection=driver.connect(URL, info);
return connection;
}
public static void testStatement(String sql) throws Exception{
Connection connection=null;
Statement statement=null;
try {
String sql="insert into test(id,name,age) + "values(?,?,?)"";
connection=getConnection();
statement=connection.createStatement();
statement.executeUpdate(sql);
} catch (Exception e) {
e.printStackTrace();
}finally{
if(statement!=null){
statement.close();
}
if(connection!=null){
connection.close();
}
}
//增
public static void insert() throws Exception{
Person person=new Person();
System.out.println("请输入ID号:");
int id=input.nextInt();
person.setId(id);
System.out.println("请输入学生姓名:");
String name=input.next();
person.name(name);
System.out.println("请输入学生年龄:");
int age=input.nextInt();
person.setAge(age);
String sql="insert into test "
+ "values("+person.setId()
+","+person.name()
+","+person.setAge()+")";
TestConnection.testStatement(sql);
System.out.println("该学生信息输入成功!!");
}
//查
public static void select() throws Exception{
Person person=new Person();
System.out.println("请输入要查询的学号:");
String eId=input.next();
String sql="select id,name,age "
+ "from test where id='"+id+"'";
System.out.println("ID"+"\t"
+"Name"+"\t"
+"Age");
testResultSet(sql);
if(bb!=true){
System.out.println("输入的学生的学号不存在!!");
}
}
//删
public static void delect() throws Exception{
System.out.println("请输入要删除学生的学号:");
String eId=input.next();
String sql="delete from test where id='"+eId+"'";
String sql1="select id,name,age"
+ " from test where id='"+eId+"'";
testResultSet(sql1);
if(bb!=false){
System.out.println("您确定要删除该学生的信息吗??");
System.out.println("1.确定----0.取消");
int n=input.nextInt();
switch(n){
case 1:testStatement(sql);
System.out.println("删除成功!!");
break;
case 0:break;
default :System.out.println("输入错误!!");
}
}
else{
System.out.println("要删除的学生的学号不存在!!!");
}
}
//改
public static void update() throws Exception{
System.out.println("请输入要修改信息学生的学号:");
String eId=input.next();
System.out.println("请输入要修改属性的值是:");
String newId=input.next();
String sql1="select id,name,age"
+ " from test where where id='"+id+"'";
String sql="update test set newId='"+newId+"' where id='"+eId+"'";
testResultSet(sql1);
if(bb!=false){
System.out.println("您确定要修改该学生的信息吗??");
System.out.println("1.确定----0.取消");
int t=input.nextInt();
switch(t){
case 1:testStatement(sql);
System.out.println("修改成功!!");
break;
case 0:break;
default :System.out.println("输入错误!!");
}
}
}
5.2 相比较使用文件,使用数据库存储与管理数据有何不一样?
1、文件系统作为一个统一的信息管理机制,具有下述功能:
①统一管理文件存储空间(即外存),实施存储空间的分配与回收。
②确定文件信息的存放位置及存放形式。
③实现文件从名字空间到外存地址空间的映射,即实现文件的按名存取。
④有效实现对文件的各种控制操作(如建立、撤销、打开、关闭文件等)和存取操作(如读、写、修改、复制、转储等)。
2、数据库管理系统,是指为数据库的建立,使用和维护而配置的软件,功能包括定义表,在表中增加,修改,删除数据,同时还提供灵活的查询数据的功能.而这些功能可以被高级语言调用.利用高级语言及其开发工具,同时调用数据库管理系统提供的功能,我们可以编制程序实现对我们日常工作中大量的非数值的数据进行管理
3. 码云
3.1. 码云代码提交记录
在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 然后搜索并截图