发表于: 2018-03-10 22:21:41

1 616


今日完成

回复师兄的提问:

1,整理出业务模型,确定需要几个对象,每个对象的属性是什么,对象和对象之间的关系是一对一,还是一对多。

对象:每个报名的学员就是一个对象,对象与对象之间的关系是一对一

属性:每个对象有10个属性,即姓名,QQ,修真类型,入学时间,毕业院校,学号,日报连接,立愿,辅导师兄,以及从何处了解到的修真院。

2,create_at,update_at 需要创建时间戳,以记录关于记录的创建时间和更新时间。想想应该怎么达到这种效果。

应该首先要获取创建和修改的时间,然后在用程序来判断操作是否为创建和修改,最后输入数据库。

3,关于索引,你可以去了解一下为什么性能会出现下降,不同数量级别下的索引和普通查询有怎样的性能差异,然后想想为什么还要用索引。

索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序。数据库使用索引以找到特定值,然后顺指针找到包含该值的行。这样可以使对应于表的SQL语句执行得更快,可快速访问数据库表中的特定信息。

当表中有大量记录时,若要对表进行查询,第一种搜索信息方式是全表搜索,是将所有记录一一取出,和查询条件进行一一对比,然后返回满足条件的记录,这样做会消耗大量数据库系统时间,并造成大量磁盘I/O操作;第二种就是在表中建立索引,然后在索引中找到符合查询条件的索引值,最后通过保存在索引中的ROWID(相当于页码)快速找到表中对应的记录。

优点:

1,大大加快数据检索速度

2,创建唯一索引,保证数据库表中每行数据的唯一性

3,加速表之间的连接

4,减少查询中分组和排序的时间

缺点:

1,索引需要占物理空间

2,会降低添加、删除和更新行的速度。

自己的话说就是:索引会降低增、删、、改的效率,但会提高查询的效率,在需要频繁查询的表上需要建立索引。

4,数据库报错有时候会导致程序运行失败,想想如何避免这种情况

使用trycatch语句块


步骤17,了解了下基本概念

1,DAO(Data Access Object) 数据访问对象是一个面向对象的数据库接口。就是建立一个接口,接口中定义了此应用程序中将会用到的所有事务方法。

2,JDBC(Java DataBase Connectivity,java数据库连接):是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。

jdbc的主要功能:

(1)建立与数据库或者其他数据源的链接

(2)向数据库发送SQL命令

(3)处理数据库的返回结果

3,JDBCTemplate:为了使 JDBC 更加易于使用,Spring 在 JDBCAPI 上定义了一个抽象层, 以此建立一个JDBC存取框架。Spring对数据库的操作在jdbc上面做了深层次的封装,使用spring的注入功能,可以把DataSource注册到JdbcTemplate之中。


使用JDBC来连接MySQL,看了教程

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class Demo {
public static void main(String[] args)
{
       String driver="com.mysql.jdbc.Driver";
       String url="jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=UTF8";
       String username="root";
       String password="612049";
       Connection conn=null;
       Statement st=null;
       try{
              Class.forName(driver);//加载驱动
     conn= DriverManager.getConnection(url,username,password);//创建数据库连接
     st=conn.createStatement();//向数据库发送要执行的SQL语句。Statement对象,用于执行不带参数的简单SQL语句

    String sql1="insert into user_info values(null,'张三',12,'')";
            String sql2="insert into user_info values(null,'王宇',13,'')";

           int row1=st.executeUpdate(sql1);
           int row2=st.executeUpdate(sql2);
           if (row1!=-1 && row2!=-1){
                 ResultSet rs=st.executeQuery("select * from user_info");
           while (rs.next()){
                  int id=rs.getInt("id");
                  String name=rs.getString("name");
                  int age=rs.getInt("age");
                  String sex=rs.getString("sex");
                  System.out.println("ID:"+id+",Name:"+name+",age:"+",sex:"+sex);
               }
  }
}
catch(Exception e)
{
e.printStackTrace();
       }
finally{
if(st!=null){
try{st.close();}catch(Exception e){e.printStackTrace();}}
if (conn!=null){
try{conn.close();}catch(Exception e){e.printStackTrace();}}
}
}
}

事先建的表如下

然后运行出错

原因是没有导入MySQL的驱动包

导包的方法是首先要了解到需要什么包,然后到中心仓库http://mvnrepository.com/搜索,在把格式复制到pom文件中即可。

<dependencies>
   <dependency>
       <groupId>mysql</groupId>
       <artifactId>mysql-connector-java</artifactId>
       <version>6.0.6</version>
   </dependency>
</dependencies>


明天计划

学习JDBCTemplate连接数据库


遇到的问题

1,之前写的sql“insert into user_info values('张三',12,'男');”语句,运行时报错:[Err] 1136 - Column count doesn't match value count at row 1

经过师兄点拨,要实现id的自增,要改为(null,'张三',12,'男'),之前程序将“张三”写入id列,因为没有指定插入的列。可以改为"insert into user_info(name,age,sex) values('张三',12,'男');"

2,对于JDBC连接数据库的整个流程,还不是很清晰


收获

学会了如何在pom文件中添加依赖,了解了jdbc连接,加强了sql语句的掌握。


返回列表 返回列表
评论

    分享到