发表于: 2018-05-20 21:35:09

1 1222


今天完成的事情:

首先重新敲了一遍链接数据库的代码。然后设置了一个关闭数据库链接,和插入100条数据的代码。

import java.sql.*;

public class Dao {
public static String url = "jdbc:mysql://localhost:3306/fei?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC";
   public static  String user = "root";
   public static String passWorld = "4351";
   public static void main(String[] args){
Connection c = null;
       PreparedStatement ps = null;
       try{
Class.forName("com.mysql.cj.jdbc.Driver");
           c = DriverManager.getConnection(url,user,passWorld);
           System.out.println("连接成功,获取连接对象 " + c);
           Statement s = c.createStatement();
           System.out.println("获取Statement对象 " + s);
           String sql = "insert into biao values(null,?,?,?,?,?,?,?,?,?,?,?,?)";
           ps = c.prepareStatement(sql);
           {
for (int i = 0;i<100;i++){
ps.setString(1,"张三"+i);
               ps.setString(2,"897845464");
               ps.setString(3,"java");
               ps.setInt(4,20170519);
               ps.setString(5,"张三");
               ps.setString(6,"897845464");
               ps.setString(7,"java");
               ps.setString(8,"张三");
               ps.setString(9,"897845464");
               ps.setString(10,"java");
               ps.setString(11,"897845464");
               ps.setString(12,"20180620");
               ps.execute();
               }
}
}catch (ClassNotFoundException e){
e.printStackTrace();
       }catch (SQLException e){
e.printStackTrace();
       }finally {
if (ps != null)
try{
ps.close();
           }catch (SQLException e){
e.printStackTrace();
               }
if (c != null)try{
c.close();
       }catch (SQLException e){
e.printStackTrace();
       }
}
}
}


然后改用try with resource改写了一下

- -一开始我try后面用的{}总是报错,后来改成()就好了,百度查了下,没找到具体解释,但是好像是只有在()的才会自动关闭?

import java.sql.*;

public class Dao {
public static String url = "jdbc:mysql://localhost:3306/fei?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC";
   public static  String user = "root";
   public static String passWorld = "4351";
   public static void main(String[] args){
try{
Class.forName("com.mysql.cj.jdbc.Driver"); //加载驱动
       }catch (ClassNotFoundException e){
e.printStackTrace();
       }
String sql = "insert into biao values(null,?,?,?,?,?,?,?,?,?,?,?,?)";
       try (
Connection c = DriverManager.getConnection(url, user, passWorld); //获取链接
              PreparedStatement ps = c.prepareStatement(sql);
           )
{
System.out.println("连接成功,获取连接对象 " + c);
               for (int i = 0;i<100;i++){
               ps.setString(1,"张三"+i);
               ps.setString(2,"897845464");
               ps.setString(3,"java");
               ps.setInt(4,20170519);
               ps.setString(5,"张三");
               ps.setString(6,"897845464");
               ps.setString(7,"java");
               ps.setString(8,"张三");
               ps.setString(9,"897845464");
               ps.setString(10,"java");
               ps.setString(11,"897845464");
               ps.setString(12,"20180620");
               ps.execute();
               }
}catch (SQLException e){
e.printStackTrace();
       }
}
}

实现数据库delete语句删除

import java.sql.*;

public class Dao {
public static String url = "jdbc:mysql://localhost:3306/fei?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC";
   public static  String user = "root";
   public static String passWorld = "4351";
   public static void main(String[] args){
try{
Class.forName("com.mysql.cj.jdbc.Driver"); //加载驱动
       }catch (ClassNotFoundException e){
e.printStackTrace();
       }
String sql = "delete from biao where ID = ?";
       try (
Connection c = DriverManager.getConnection(url, user, passWorld); //获取链接
              PreparedStatement ps = c.prepareStatement(sql);
           )
{
System.out.println("连接成功,获取连接对象 " + c);

               ps.setString(1,"15");
               ps.execute();

           }catch (SQLException e){
e.printStackTrace();
       }
}
}

实现update语句进行数据更改

import java.sql.*;

public class Dao {
public static String url = "jdbc:mysql://localhost:3306/fei?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC";
   public static  String user = "root";
   public static String passWorld = "4351";
   public static void main(String[] args){
try{
Class.forName("com.mysql.cj.jdbc.Driver"); //加载驱动
       }catch (ClassNotFoundException e){
e.printStackTrace();
       }
String sql = "update biao set name = ? where ID = ?";
       try (
Connection c = DriverManager.getConnection(url, user, passWorld); //获取链接
              PreparedStatement ps = c.prepareStatement(sql);
           )
{
System.out.println("连接成功,获取连接对象 " + c);

               ps.setString(1,"龙傲天");
               ps.setString(2,"1");
               ps.execute();

           }catch (SQLException e){
e.printStackTrace();
       }
}
}


使用select * from where 语句

import java.sql.*;
import java.sql.ResultSet;

public class Dao {
public static String url = "jdbc:mysql://localhost:3306/fei?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC";
   public static  String user = "root";
   public static String passWorld = "4351";
   public static void main(String[] args){
try{
Class.forName("com.mysql.cj.jdbc.Driver"); //加载驱动
       }catch (ClassNotFoundException e){
e.printStackTrace();
       }
String sql = "select * from biao where ID = ?";
       try (
Connection c = DriverManager.getConnection(url, user, passWorld); //获取链接
              PreparedStatement ps = c.prepareStatement(sql);
           )
{
System.out.println("连接成功,获取连接对象 " + c);
               ps.setString(1,"20");
               ResultSet rs = ps.executeQuery();
               while (rs.next()) {
int id = rs.getInt(1);
                   String name = rs.getString(2);
                   String qq = rs.getString(3);
                   String type = rs.getString(4);
                   String start = rs.getString(5);
                   String university = rs.getString(6);
                   String studyid = rs.getString(7);
                   String link = rs.getString(8);
                   String hope = rs.getString(9);
                   String senior = rs.getString(10);
                   String know = rs.getString(11);
                   String creat = rs.getString(12);
                   String update = rs.getString(13);
                   System.out.println(id+ " " + name+ " " + qq+ " " + type + " " +start + " " +university + " " + studyid +" " + link +" " +hope +" " +senior +" " +know+ " " +creat + " " +update);
               }
}catch (SQLException e){
e.printStackTrace();
       }
}
}

运行结果:

excuteQuery,针对查询数据使用

excuteUpdate,针对数据更新,增删改,使用

excute,两者都可执行,在查询数据返回ture,增删改返回false。


表格结构

dao层

public interface Dao{
public void insert(String name,int age);
   public void delete(int id,String name);
   public void select(int id);
   public void update(int id,String name,int age);
}

实例层

import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.PreparedStatement;
public class Jdbc implements Dao {
String driver = "com.mysql.cj.jdbc.Driver";
   String url = "jdbc:mysql://localhost:3306/fei?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC";
   String user = "root";
   String pw = "4351";
       //加载驱动
   //连接数据库
   public Connection getConection() throws SQLException,ClassNotFoundException{
Class.forName(driver);
           return DriverManager.getConnection(url,user,pw);
   }
@Override
   public void insert(String name, int age) {
String sql = "insert into record values(null,?,?)";
       try{
Connection c = getConection();
           PreparedStatement ps = c.prepareStatement(sql);
           ps.setString(1,name);
           ps.setInt(2,age);
           ps.executeUpdate();
       }catch (SQLException e){
e.printStackTrace();
       }catch (ClassNotFoundException e){
e.printStackTrace();
       }
}
@Override
   public void delete(int id, String name) {
String sql = "delete from record where id = ? or name = ?";
       try(
Connection c = getConection();
           PreparedStatement ps = c.prepareStatement(sql);) {
ps.setInt(1, id);
           ps.setString(2, name);
           ps.executeUpdate();
       }catch (SQLException e){
e.printStackTrace();
       }catch (ClassNotFoundException e){
e.printStackTrace();
       }
}
@Override
   public void select(int id) {
String sql = "select * from record where id = ?";
       try(
Connection c = getConection();
           PreparedStatement ps = c.prepareStatement(sql);) {
ps.setInt(1,id);
           ps.executeQuery();
           ResultSet rs = ps.executeQuery();
           while (rs.next()){
int id1 =rs.getInt(id);
               String name1 = rs.getString(2);
               int age1 = rs.getInt(3);
               System.out.println(id1+name1+age1);
           }
}catch (SQLException e){
e.printStackTrace();
       }catch (ClassNotFoundException e){
e.printStackTrace();
       }
}
@Override
   public void update(int id,String name,int age) {
String sql = "update record set id = ?,name = ?,age = ? where id = ?";
       try(
Connection c = getConection();
           PreparedStatement ps = c.prepareStatement(sql)) {
ps.setInt(1, id);
           ps.setString(2,name);
           ps.setInt(3,age);
           ps.setInt(4,id);
           ps.executeUpdate();
       }catch (SQLException e){
e.printStackTrace();
       }catch (ClassNotFoundException e){
e.printStackTrace();
       }
}
public static void main(String[] args){
Jdbc record = new Jdbc();
       record.insert("李四",17);
       record.select(1);
       record.update(1,"王五",23);
      

   }
}

运行结果。

明天计划的事情:

看看mybatis。

看看java基础书

放松一下脑袋- -有点进入负载模式了
遇到的问题:

finally这里有点不太懂- -

为什么写成

finally {

            if (ps != null)

                ps.close();

           

            if (c != null)try

                c.close();

    }

这样不行呢。会报错。

必须要改成才可以- -

finally {

            if (ps != null)

                try{

                ps.close();

            }catch (SQLException e){

                e.printStackTrace();

                }

            if (c != null)try{

                c.close();

        }catch (SQLException e){

                e.printStackTrace();

        }

        }

    }


在查询语句的时候,这么写就会报错。

try (
Connection c = DriverManager.getConnection(url, user, passWorld); //获取链接
      PreparedStatement ps = c.prepareStatement(sql);
      ps.setString(1,"20");
      ResultSet rs = ps.executeQuery();
   )
{

这样就可以了。。- -我理解的是try()里面不能有具体的赋值对象和语句?只能存在对象的调用?因为在执行完()后内语句就自动关闭了?

try (
Connection c = DriverManager.getConnection(url, user, passWorld); //获取链接
      PreparedStatement ps = c.prepareStatement(sql);
   )
{
System.out.println("连接成功,获取连接对象 " + c);
       ps.setString(1,"20");

       ResultSet rs = ps.executeQuery();

}

- -用jbdc向数据库添加数据时,如果表是新的表,没有数据,且有设置不为null的。。

执行命令,就没办法存进去数据。。
收获:一步一步在成长ing


返回列表 返回列表
评论

    分享到