• 20165318 2017-2018-2 《Java程序设计》第七周学习总结


    20165318 2017-2018-2 《Java程序设计》第七周学习总结

    目录

    学习过程遇到的问题及总结

    • 问题1:初始化数据库时出现以下问题:

    • 解决方法1:由于我电脑之前装过MySQL,初始化过数据库,因此不能再次初始化,不用管这个错误,继续进行下面的步骤就行了。

    • 问题2:由于我电脑之前装过MySQL,所以就下载了Navicat来运行MySQL,但是连接原有的数据库时,出现以下问题:

    • 解决方法2:参考MYSQL错误代码#1045 Access denied for user 'root'@'localhost'
      解决步骤如下:
      1、停止MYSQL服务,CMD打开DOS窗口,输入 "net stop mysql ";不过有时候不停止也是无所谓;
      2、在CMD命令行窗口,进入MYSQL安装目录 比如“F:mysql-5.7.21-winx64in”
      3、在第二点的命令窗口输入命令为:"mysqld-nt --skip-grant-tables",作用是,进入mysql安全模式,即当mysql起来后,不用输入密码就能进入数据库。
      4、这时候可以进入数据库后,给自己的数据库重新设置密码就可以了!

    • 问题3:下过MySQL之后,我又安装了XAMPP,但是一直不能使用,最初是出现以下问题:

        12:19:13 PM [mysql] Error: MySQL shutdown unexpectedly.
        12:19:13 PM [mysql] This may be due to a blocked port, missing dependencies,
        12:19:13 PM [mysql] improper privileges, a crash, or a shutdown by another method
        12:19:13 PM [mysql] Press the Logs button to view error logs and check
        12:19:13 PM [mysql] the Windows Event Viewer for more clues
        12:19:13 PM [mysql] If you need more help, copy and post this
        12:19:13 PM [mysql] entire log window on the forums
    

    • 多次查找之后,暂时还是没有解决方法,但是我的Navicat可以正常运行,所以还是能后完成本周的代码测试任务。

    返回目录

    教材学习内容总结

    第11章 JDBC与MySQL数据库

    11.1 MySQL数据库管理系统

    MySQL数据库管理系统,简称MySQL,是世界上最流行的开源数据库管理系统,其社区版(MySQL Community Edition)是最流行的免费下载的开源数据库管理系统。

    下载安装后,进行启动MySQL数据库服务器,并建立连接,建立数据库,创建表等操作。

    11.2 连接MySQL数据库

    1.下载JDBC-MySQL数据库驱动

    2.加载JDBC-MySQL数据库驱动
    代码如下:

    try{ 
    Class.forName("com.mysql.jdbc.Driver");
    }
    catch(Exception e){} 
    

    11.3 连接数据库

    使用Connection getConnection(java.lang.String)方法建立连接的代码如下:

    Connection con; String uri = "jdbc:mysql://192.168.100.1:3306/students?user=r oot&password=&useSSL=true"; 
    try{ con = DriverManager.getConnection(uri); //连接代码 } catch(SQLException e){ System.out.println(e); }
    

    使用
    Connection getConnection(java.lang.String, java.lang.String, java.lang.String)方法建立连接的代码如下:

    Connection con;
    String uri = "jdbc:mysql:// 192.168.100.1:3306/students? useSSL=true";
    String user ="root";
    String password ="";
    try{  
          con = DriverManager.getConnection(uri,user,password); //连接代码
       }
    catch(SQLException e){
          System.out.println(e);
    }
    

    11.4 查询操作

    具体步骤:

    1.向数据库发送SQL查询语句

    try{  Statement sql=con.createStatement();
    }
    catch(SQLException e ){}
    

    2.处理查询结果


    无论字段是何种属性,总可以使用
    getString(int columnIndex)或 getString(String columnName)
    方法返回字段值的串表示。

    3.关闭连接

    顺序查询:

    指ResultSet对象一次只能看到一个数据行,使用next()方法移到下一个数据行,next()方法最初的查询位置,即游标位置,位于第一行的前面。next()方法向下(向后、数据行号大的方向)移动游标,移动成功返回true,否则返回false。

    控制游标:

    为了得到一个可滚动的结果集,需使用下述方法获得一个Statement对象。

    Statement stmt = con.createStatement(int type ,int concurrency);
    
    条件与排序查询:

    (1)where子语句
    一般格式:

    select 字段 from 表名 where 条件
    

    (2)排序
    用order by子语句对记录排序

    11.5 更新、添加与删除操作

    1.更新

    update 表 set 字段 = 新值 where <条件子句>
    

    2.添加

    insert into 表(字段列表) values (对应的具体的记录)
    

    insert into 表 values (对应的具体的记录)
    

    3.删除

    delete from 表名 where <条件子句>
    

    11.6 使用预处理语句

    Connection和某个数据库建立了连接对象con,那么con就可以调用prepareStatement(String sql)方法对参数sql指定的SQL语句进行预编译处理,生成该数据库底层的内部命令,并将该命令封装在PreparedStatement对象中,那么该对象调用下列方法都可以使得该底层内部命令被数据库执行。

    11.7 事务

    JDBC事务处理步骤

    1.用setAutoCommit(booean b)方法关闭自动提交模式
    2.用commit()方法处理事务
    3.用rollback()方法处理事务失败

    返回目录

    错题总结

    第五周错题总结

    • 错题1:
    如果超出JVM运行能力之外,如“byte[] arr=new byte[1024*1024*600];”会抛出java.lang.OutOfMemoryError异常。 
    A .true
    B .false
    
    正确答案:B
    
    • 解析1:对于严重的错误,通过Error类来描述,而对于非严重的问题,则是通过Exception类来进行描述的,本题不是严重的错误,应该通过Exception类来描述。

    • 错题2:

    下列关于public int read(byte[] b, int off, int len)方法的叙述,正确的是 
    A .此方法覆盖了InputStream类中的read方法。
    B .此方法从该输入流中将最多len个字节的数据读入一个byte数组中。
    C .此方法返回读入缓冲区的字节总数,如果因为已经到达文件末尾而没有更多的数据,则返回-1。
    D .如果b为null,则会抛出IndexOutOfBoundsException异常。
    
    正确答案:A B C
    
    • 解析2:D项异常抛出错误,应该抛出NullPointerException异常。

    • 错题3:

    下列选项中,可以通过编译的是
    InputStream is = new BufferedInputStream(new FileInputStream("zoo.txt"));
       InputStream wrapper = new _____; 
    A .BufferedInputStream
    B .FileInputStream
    C .BufferedWriter
    D .ObjectInputStream
    E .ObjectOutputStream
    F .BufferedReader
    
    正确答案:A D
    
    • 解析3:由于BufferedInputStreamObjectInputStream都是InputStream的子类,因此可以使用InputStream wrapper = new _____;语句,wrapper为上转型对象。

    • 错题4:

    What is the result of executing the following code? 
    String line;
    Console c = System.console();
    Writer w = c.writer();
    if ((line = c.readLine()) != null)
       w.append(line);
    w.flush(); 
    A .The code runs without error but prints nothing.
    B .The code prints what was entered by the user.
    C .An ArrayIndexOutOfBoundsException might be thrown.
    D .A NullPointerException might be thrown.
    E .An IOException might be thrown.
    F .The code does not compile.
    
    正确答案:B D E
    
    • 解析4:This is correct code for reading a line from the console and writing it back out to the console, making option B correct.
      Options D and E are also correct. If no console is available, a NullPointerException is thrown. The append() method throws anIOException.

    第六周错题总结

    • 错题1:
    已知list是一个合法的集合引用,getCollection()返回一个合法集合的引用,下列合法的是? 
    A .for(Object o  :  list)
    B .for(Object o  :  getCollection())
    C .for(Object o  :  list.iterator())
    D .for(lterator i ;  list.iterator()  ;  i.hasNext()  )
    E .for(lterator i=list.iterator(); i.hasNext();  )
    
    正确答案:B E
    
    • 解析1:for(Object o : )该语句是依次输出数组中的元素,list不是数组,A项错误。list.iterator是单个引用,C项错误。D项中,i没有赋初值,错误。

    • 错题2:

    下列关于泛型类的子类的说法,正确的个数为
    ①LinkedList<E>泛型类创建一个链表结构的对象。
    ②Stack<E>泛型类创建一个堆栈对象。
    ③HashMap<E>泛型类创建散列映射。
    ④DelayQueue<E>泛型类创建一个无界阻塞队列。
    ⑤TreeSet<E>泛型类创建树映射。
    ⑥Vector<E>创建可增长的对象数组。 
    A .6
    B .5
    C .4
    D .3
    
    正确答案:B
    
    • 解析2:⑤TreeSet泛型类创建树集。由于对HashMap不了解,误认为只有HashMap<K,V>泛型类创建散列映像而HashMap不是。

    • 错题3:

    下列关于正则表达式的说法,正确的是 
    A .aw*匹配以字母a开头的单词
    B .d+匹配1个或更多连续的数字。
    C .w{6} 匹配6个及以上字符的单词。
    D .[0-9]代表的含意与d就是完全一致的:一位数字
    E .S+匹配不包含空白符的字符串。
    F .(d{1,3}.){3}d{1,3}用来匹配 IP地址。
    
    正确答案:A B D E
    
    • 解析3:C项:w{6} 匹配刚好6个字符的单词。
      F项: IP地址中每个数字都不能大于255,该表达式忽略了这个约束条件。正确的是((2[0-4]d|25[0-5]|[01]?dd?).){3}(2[0-4]d|25[0-5]|[01]?dd?)。
      我没有选B项,因为我误以为d+也可以匹配1个或更多不连续的数字。

    • 错题4:

    下列说法正确的是 
    A .Java 8之前,对日期进行运算,使用DateFormat类。
    B .需要人类能理解的时间,建议使用Date类的toString()。
    C .现在国际上通用的标准时间是GMT。
    D .new Date(System.currentTimeMillis())等价于new Date()
    
    正确答案:D
    
    • 解析4:通过查询API,由Data的构造方法可知, Date(System.currentTimeMillis())等价于new Date(),D项正确。

    • 错题5:

    下列哪个表达式是正确的(无编译错误)? 
    A .int m =Float.parseFloat("567");
    B .int m =Short.parseShort("567")
    C .byte m =Integer.parseInt("2");
    D .float m =Float.parseDouble("2.9")
    
    正确答案:C
    
    • 解析5:A项:float型比int型精度高,应使用类型转换,转换为int;B项:567超出short型变量的范围;D项:同A项,double型比float型精度高,应使用类型转换,转换为float。

    • 错题6:

    对于如下代码,下列哪个叙述是正确的?
    public class E {
      public static void main (String args[]) {
        String s1 = args[1];
        String s2 = args[2];
        String s3 = args[3];
        System.out.println(s3); 
      }
    } 
    A .程序出现编译错误。
    B .无编译错误,在命令行执行程序:“java E I love this game”,程序输出this。
    C .无编译错误,在命令行执行程序:“java E let us go”,程序无运行异常。
    D .无编译错误,在命令行执行程序:“java E 0 1 2 3 4 5 6 7 8 9”程序输出3。
    
    正确答案:D
    
    • 解析6:没有看清题目,没有在命令行中执行,而是将java E也作为输入,结果输出错误。

    返回目录

    代码托管

    码云链接:

    代码统计

    返回目录

    参考链接

    MYSQL错误代码#1045 Access denied for user 'root'@'localhost'

    XAMPP运行MySQL entire log window on the forums解决方案

  • 相关阅读:
    spring给容器中注入组件的几种方式
    Linux多进程
    Linux多进程的应用
    Linux进程通信
    Linux信号
    Linux共享内存
    Linux信号量
    Linux多线程
    Linux线程同步
    Linux调用可执行程序
  • 原文地址:https://www.cnblogs.com/sunxiaoxuan/p/8838975.html
Copyright © 2020-2023  润新知