发表于: 2017-08-02 23:57:45

4 1010


日报来了...


一、完成的任务

1.重新操作一遍用mavan创建java项目,并用命令package,clean,install将项目打包成jar,并在本地.m2看到jar包

2.学习JDBC部分内容,会写配置文件,连接工具类,学会用Statement语句、PreparedStatement语句进行操作数据库

详细如下:

(一)使用maven快速创建java项目并部署到本地库

1.打开MyEclipse,file>new>other>maven project>next(图1)>next(图2)>next(图3)>finish(图4),得到图5


2.配置输出目录

①右键项目>build path>configure build path,然后按图6操作新建2个文件夹

②按图7操作,将新建的两个文件夹的出书目录设置成图8中的样子。此时项目结构如图9。

3.更新POM.XML


4.加载插件

在cmd.exe进入MyEclipse工作空间>项目文件javaFortest_1>键入指令mvn ecplise:ecplise
...
**错误示范1
**错误示范2


5.打包

在cmd.exe进入项目路径,键入 mvn packag ,打包项目,在target目录下生成jar包
键入mvn clean,清理target目录下编译内容
键入mvn install 部署当前工程的输出文件到本地仓库
D:\Workspaces\MyEclipse 10\javaForTest_1>mvn install
[INFO] Scanning for projects...
...
[INFO] Installing D:\Workspaces\MyEclipse 10\javaForTest_1\target\javaForTest_1-0.0.1-SNAPSHOT.jar to D:\maven\.m2\repository\com\mission\javaForTest_1\0.0.1-SNAPSHOT\javaForTest_1-0.0.1-SNAPSHOT.jar 这是部署路径
[INFO] Installing D:\Workspaces\MyEclipse 10\javaForTest_1\pom.xml to D:\maven\.m2\repository\com\mission\javaForTest_1\0.0.1-SNAPSHOT\javaForTest_1-0.0.1-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 9.146 s
[INFO] Finished at: 2017-07-31T16:20:23+08:00
[INFO] Final Memory: 20M/143M
[INFO] ------------------------------------------------------------------------
执行完毕后,可以发现①项目文件目录下又重新生成target目录及jar包
          
②本地库中有jar包


(二)学习JDBC,分别用Statement语句、PrepraedStatement语句进行增删改查

1.新建表

(1)新建数据库
mysql> create database Customers
(2)调用数据库
mysql> use Customers;
(3)新建表
mysql>  create table INFO(
    -> id int primary key auto_increment,
    -> name varchar(20) not null,
    -> email varchar(30) not null
    -> );
(4)向表中插入数据
mysql> insert into INFO(name,email)
    -> values('tom','tom@gmail.com'),
    -> ('jack','jack@gmail.com'),
    -> ('rose','rose@gmail.com');
(5)查看新建的表
mysql> select * from INFO;
+----+------+----------------+
| id | name | email          |
+----+------+----------------+
|  1 | tom  | tom@gmail.com  |
|  2 | jack | jack@gmail.com |
|  3 | rose | rose@gmail.com |
+----+------+----------------+
3 rows in set (0.00 sec)


2.把连接数据库和关闭数据库操作封装成工具类

(1)MyEclipse创建一个java project,命名为JDBCdemo2(JDBCdemo是用maven创建的,但是连不上数据库,不知道怎么回事,就重新创建了一个项目)
(2)在项目下新建一个文件夹lib,把下载的Mysql驱动程序包粘贴过来。右键jar包>build path>add build path添加驱动程序到引用路径
(3)在src文件下新建一个file,作为配置文件,命名config.properties
 
(4)编辑配置文件,给数据库驱动器4个参数赋值,如下图

(5)在包com.mission.JDBCdemo下新建一个class,用来把数据连接打开和关闭封装成一个工具类,命名为DBUtil.java

(6)编写DBUtil.java,代码如下:
package com.mission.demo;
import java.io.FileReader;
import java.io.Reader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
public class DBUtil {
       private static String driver;
       private static String url;
       private static String username;
       private static String password;
       static{
              Properties prop = new Properties();
              Reader in;
              try {
                     in = new FileReader("src\\config.properties");
                     prop.load(in);
              } catch (Exception e) {
                     e.printStackTrace();
              }
              driver = prop.getProperty("driver");
              url = prop.getProperty("url");
              username = prop.getProperty("username");
              password = prop.getProperty("password");
       }
       public static Connection open(){
              try {
                     Class.forName(driver);
                     return DriverManager.getConnection(url, username,password);
              } catch (Exception e) {
                     e.printStackTrace();
              }
              return null;
       }
       public static void close(Connection conn){
              if(conn!=null){
                     try {
                           conn.close();
                     } catch (SQLException e) {
                           e.printStackTrace();
                     }
              }
       }
}


3.使用Statement语句进行CRUD操作

(1)插入数据
package com.mission.demo;
import java.sql.*;
public class test {
    public static void main(String[] args) {
         insert();
    }
    static void insert(){
        Connection conn = DBUtil.open();
        String sql = "insert into INFO(name,email) values('joe','joe@gmail.com')";
        try{
            Statement stmt = conn.createStatement();
            stmt.executeUpdate(sql);
        }catch(SQLException e){
            e.printStackTrace();
        }finally{
            DBUtil.close(conn);
        }   
    }
}
用cmd.exe查看结果
(2)更新数据
 package com.mission.demo;
 import java.sql.*;
 public class test {
     public static void main(String[] args) {
          update();
     }
     static void update(){
          Connection conn = DBUtil.open();
          String sql = "update INFO set name = 'mike' where id = 4";
          try{
               Statement stmt = conn.createStatement();
               stmt.executeUpdate(sql);
          }catch(SQLException e){
               e.printStackTrace();
          }finally{
               DBUtil.close(conn);
          }
     }
 }          
用cmd.exe查看结果
(3)删除数据
 package com.mission.demo;
 import java.sql.*;
 public class test {
     public static void main(String[] args) {
          delete();
     }
     static void delete(){
         Connection conn = DBUtil.open();
         String sql = "delete from INFO where id = 4";
         try{
             Statement stmt = conn.createStatement();
             stmt.executeUpdate(sql);
         }catch(SQLException e){
             e.printStackTrace();
         }finally{
             DBUtil.close(conn);
         }
       }   
 }


(4)查询数据

 package com.mission.demo;
 import java.sql.*;
 public class test {
     public static void main(String[] args) {
          delete();
     }
     static void query(){
         Connection conn = DBUtil.open();
         String sql = "select id,name,email from INFO";
         try{
             Statement stmt = conn.createStatement();
             ResultSet rs = stmt.executeQuery(sql);
             while(rs.next()){
                 int id = rs.getInt(1);
                 String name = rs.getString(2);
                 String email = rs.getString(3);
                 System.out.println(id+","+name+","+email);
             }
         }catch(SQLException e){
             e.printStackTrace();
         }finally{
             DBUtil.close(conn);
         }
     }     
 }
查询结果


4.使用PreparedStatement进行CRUD操作
(1)插入数据
package com.mission.demo;
import java.sql.*;
public class testPstmt {
       public static void main(String[] args) {
              insert("mike","mike@gmail.com");
       }
       static void insert(String name,String email){
              String sql = "insert into INFO(name,email) values(?,?)";
              Connection conn = DBUtil.open();
              try {
                     PreparedStatement pstmt = conn.prepareStatement(sql);
                     pstmt.setString(1, name);
                     pstmt.setString(2, email); 
                     pstmt.executeUpdate();
              } catch (SQLException e) {
                     e.printStackTrace();
              }finally{
                     DBUtil.close(conn);
              }
       }
}
查看结果
(2)更新数据
package com.mission.demo;
import java.sql.*;
public class testPstmt {
       public static void main(String[] args) {
               INFO info = new INFO();
               info.setName("park");
               info.setId(5);
               update(info);
       }
       static void update(INFO info){
              String sql = "insert into INFO(name,email) values(?,?)";
              Connection conn = DBUtil.open();
              try {
                  String sql = "update INFO set name=? where id=? ";
                     pstmt.setString(1, info.getName());
                     pstmt.setInt(2, info.getId());
                     pstmt.executeUpdate();
              } catch (SQLException e) {
                     e.printStackTrace();
              }finally{
                     DBUtil.close(conn);
              }
       }
}
查看结果
(3)删除数据
package com.mission.demo;
import java.sql.*;
public class testPstmt {
       public static void main(String[] args) {
              delete(5);
       }
       static void delete(int id){
              String sql = "delete from INFO where id=?";
              Connection conn = DBUtil.open();
              try {
                     PreparedStatement pstmt = conn.prepareStatement(sql);
                     pstmt.setInt(5, id);
                     pstmt.executeUpdate();
              } catch (SQLException e) {
                     e.printStackTrace();
              }finally{
                     DBUtil.close(conn);
              }
       }
}
查看结果
(4)查询结果
package com.mission.demo;
import java.sql.*;
public class testPstmt {
       public static void main(String[] args) {
               INFO info = query(2);
               if(info!=null){
                      System.out.println(info.getId()+","+info.getName()+","+info.getEmail);
               }
       }
       static INFO query(int id){
              String sql = "select * from INFO where id=?";
              Connection conn = DBUtil.open();
              try {
                     PreparedStatement pstmt = conn.prepareStatement(sql);
                     pstmt.setInt(1, id);
                     ResultSet rs = pstmt.executeQuery();
                     if(rs.next()){
                           String name = rs.getString(2);
                           String email = rs.getString(3);
                           INFO info = new INFO();
                           info.setId(id);
                           info.setName(name);
                           info.setEmail(email);
                           return info;
                     }
              } catch (SQLException e) {
                     e.printStackTrace();
              }finally{
                     DBUtil.close(conn);
              }
              return null;
       }
}
查看结果


二、收获

1.很多软件、插件都是第一次安装设置,下载的版本与搜到的教程不一致,这些状况会导致各种各样的问题;另外代码是要自己动手去写去运行才知道代码正确而有效写法是怎么一回事。所以在日报里我会尽量详细记录操作步骤、问题的解决方法还有亲手敲代码,加深记忆、方便回顾。

2.卡在步骤17好几天了,感觉要拿下步骤17需要学习的东西非常多,还特别难看懂,差点放弃了,但想着不能做咸鱼,咬牙反复翻书百度看视频画思维导图写笔记,才有了点头绪,终于把JDBC的基础内容啃下来一些,心累的同时也有些成就感...拒绝咸鱼..


三、遇到的问题

用maven创建的java项目,连接数据库失败(后来用MyEclipse直接创建java项目,用同样的方法连接数据库成功),是不是要把数据库驱动程序当成依赖写进pom.xml?


四、明天的计划

1.用JDBC编写DAO

2.学习JDBCTemplate,学会用JDBCTemplate连接数据库



返回列表 返回列表
评论

    分享到