亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java jdbc連接和使用詳細(xì)介紹

 更新時(shí)間:2016年12月25日 14:11:22   投稿:lqh  
這篇文章主要介紹了 java jdbc連接和使用詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下

 java jdbc連接和使用

jdbc

導(dǎo)入驅(qū)動(dòng)

//jar是已經(jīng)打包好的class文件集,可以引用到其他工程中
//Build Path中add external jars導(dǎo)入

連接JDBC

1. 加載驅(qū)動(dòng)

  Class.from("com.mysql.jdbc.Driver");

創(chuàng)建連接

//導(dǎo)包使用 java.sql.*;
String jdbc="jdbc:mysql://localhost:3306/student?user=root&password=&characterEncoding=utf-8";//student是表名
Connection conn = DriverManager.getConnection(jdbc);

2. 注意 數(shù)據(jù)庫(kù)打開之后一定要記得關(guān)。

 conn.close();

1. 執(zhí)行SQL語句 (創(chuàng)建表,插入,刪除,更新)

使用Statemant

Statemant st = conn.createStatemant();
 int row = st.executeUpdate(sql語句);//不能做查詢操作。

使用PrepareStatement

可以使用?占位符來代替你需要傳遞的參數(shù)

String sql = "insert into " + TABLENAME
+ "(name,subject,score) values(?,?,?)";
PrepareStatement pt = conn.prepareStatement(sql);
 //給每一位占位符設(shè)置值,下標(biāo)從1開始
 pt.setString(1,score.getName());
 pt.setString(2.score.getSubject());
pt.setDouble(3,score.getScore());
 //使用無參的方法
pt.executeUpdate();

1.查詢操作

static List<Score> queryScore(Connection pconn, Score pScore)
      throws SQLException {
    ArrayList<Score> mlist = new ArrayList<>();
    String sql = "select * from " + TABLENAME + " where name = ?";
    PreparedStatement ps = pconn.prepareStatement(sql);
    ps.setString(1, pScore.getName());
    ResultSet rs = ps.executeQuery();

    while (rs.next()) {
      // 這里可以通過rs獲取所有結(jié)果
      String subject = rs.getString("subject");
      int id = rs.getInt("id");
      double score = rs.getDouble("score");
      mlist.add(new Score(id, pScore.getName(), subject, score));
    }
    return mlist;
  }

下面是一個(gè)小程序

//建立數(shù)據(jù)庫(kù)連接類
public class DAO {

  // 放問數(shù)據(jù)庫(kù)的鏈接地址
  static String jdbc = "jdbc:mysql://localhost:3306/student?user=root&password=&characterEncoding=utf-8";

  // 打開鏈接
  public static Connection connection() {
    // 使用JDBC的步驟
    // 1. 加載JDBC驅(qū)動(dòng)
    try {
      // 類的全名 包名+類名
      Class.forName("com.mysql.jdbc.Driver");
      // 2. 連接數(shù)據(jù)庫(kù)
      Connection conn = DriverManager.getConnection(jdbc);
      return conn;
    } catch (Exception e) {
      System.out.println("驅(qū)動(dòng)加載失敗");
      return null;
    }
  }



}


//分?jǐn)?shù)類
public class Score {

  String name;
  String id;
  String subject;
  double score;



  public Score(String name, String subject, double score) {
    super();
    this.name = name;
    this.subject = subject;
    this.score = score;
  }



  @Override
  public String toString() {
    return "Score [name=" + name + ", id=" + id + ", subject=" + subject
        + ", score=" + score + "]";
  }



  public Score(String name, String id, String subject, double score) {
    super();
    this.name = name;
    this.id = id;
    this.subject = subject;
    this.score = score;
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public String getId() {
    return id;
  }

  public void setId(String id) {
    this.id = id;
  }

  public String getSubject() {
    return subject;
  }

  public void setSubject(String subject) {
    this.subject = subject;
  }

  public double getScore() {
    return score;
  }

  public void setScore(double score) {
    this.score = score;
  }

}


//實(shí)現(xiàn)類
public class Test {


  public static String TABLENAME = "score";

  public static void main(String[] args) {
    try {
      Connection conn = DAO.connection();
      if (conn != null) {
        System.out.println("鏈接上了");
        // createTable(conn);
        // 插入一條記錄
        // Score score = new Score("李四 ", "Android", 98);
        // System.out.println(addScore2(conn, score));
        // deleteScore(conn, score);
        // updateScore(conn, score);
        List<Score> list = queryScoreByName(conn, "王五"); //queryAllScore(conn);
        for (Score score : list) {
          System.out.println(score);
        }
        conn.close();
      } else {
        System.out.println("鏈接失敗 ");
      }
    } catch (SQLException e) {
      e.printStackTrace();
    }
  }

  // 創(chuàng)建一張表
  public static boolean createTable(Connection conn) {
    // 開始執(zhí)行sql語句
    String sql = "create table "
        + TABLENAME
        + "(id integer primary key auto_increment,name varchar(3) not null,subject varchar(20) not null,score double)";
    // 要執(zhí)行一條語句,需要一個(gè)執(zhí)行的類 Statement
    try {
      Statement st = conn.createStatement();
      int result = st.executeUpdate(sql);
      System.out.println(result);
      if (result != -1)
        return true;
    } catch (SQLException e) {
      e.printStackTrace();
    }
    return false;
  }

  // 添加一條記錄
  public static boolean addScore(Connection conn, Score score)
      throws SQLException {
    String sql = "insert into " + TABLENAME
        + "(name,subject,score) values('" + score.getName() + "','"
        + score.getSubject() + "'," + score.getScore() + ")";
    System.out.println(sql);
    Statement st = conn.createStatement();
    int row = st.executeUpdate(sql);
    if (row > 0)
      return true;
    return false;
  }

  // 添加一條記錄2
  public static boolean addScore2(Connection conn, Score score)
      throws SQLException {
    // 占位符?來代替需要設(shè)置的參數(shù)
    String sql = "insert into " + TABLENAME
        + "(name,subject,score) values(?,?,?)";
    PreparedStatement ps = conn.prepareStatement(sql);
    // 必須給定?所代表的值
    ps.setString(1, score.getName());
    ps.setString(2, score.getSubject());
    ps.setDouble(3, score.getScore());
    // 調(diào)用無參的方法
    int row = ps.executeUpdate();
    if (row > 0)
      return true;
    return false;
  }

  public static boolean deleteScore(Connection conn, Score score)
      throws SQLException {
    String sql = "delete from " + TABLENAME + " where name=? and subject=?";
    // 創(chuàng)建PrepareStatement
    PreparedStatement ps = conn.prepareStatement(sql);
    ps.setString(1, score.getName());
    ps.setString(2, score.getSubject());
    // ps.setDouble(3, score.getScore());
    // 執(zhí)行
    int row = ps.executeUpdate();
    System.out.println(row);
    if (row > 0)
      return true;
    return false;
  }

  public static boolean updateScore(Connection conn, Score score)
      throws SQLException {
    // 修改 score人他的科目的成績(jī)
    String sql = "update " + TABLENAME
        + " set score=? where name=? and subject=?";
    PreparedStatement ps = conn.prepareStatement(sql);
    ps.setDouble(1, score.getScore());
    ps.setString(2, score.getName());
    ps.setString(3, score.getSubject());
    int row = ps.executeUpdate();
    System.out.println(row);
    if (row > 0)
      return true;
    return false;
  }

  public static List<Score> queryAllScore(Connection conn)
      throws SQLException {
    String sql = "select * from " + TABLENAME;
    // 開始查詢
    Statement st = conn.createStatement();
    ResultSet rs = st.executeQuery(sql);
    List<Score> list = new ArrayList<Score>();
    while (rs.next()) {
      // 這里可以通過rs獲取所有結(jié)果
      String id = rs.getString("id");
      String name = rs.getString("name");
      String subject = rs.getString("subject");
      double score = rs.getDouble("score");
      list.add(new Score(name, id, subject, score));
    }
    // 結(jié)束
    return list;
  }

  public static List<Score> queryScoreByName(Connection conn, String name)
      throws SQLException {
    String sql = "select * from " + TABLENAME + " where name=?";
    PreparedStatement pt = conn.prepareStatement(sql);
    pt.setString(1, name);
    ResultSet rs = pt.executeQuery();
    List<Score> list = new ArrayList<>();
    while (rs.next()) {
      String subject = rs.getString("subject");
      String id = rs.getString("id");
      double score = rs.getDouble("score");
      list.add(new Score(name, id, subject, score));
    }
    return list;
  }

相關(guān)文章

  • Spring?Boot使用線程池處理上萬條數(shù)據(jù)插入功能

    Spring?Boot使用線程池處理上萬條數(shù)據(jù)插入功能

    這篇文章主要介紹了Spring?Boot使用線程池處理上萬條數(shù)據(jù)插入功能,使用步驟是先創(chuàng)建一個(gè)線程池的配置,讓Spring Boot加載,用來定義如何創(chuàng)建一個(gè)ThreadPoolTaskExecutor,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2022-08-08
  • Java實(shí)現(xiàn)線程的四種方式解析

    Java實(shí)現(xiàn)線程的四種方式解析

    這篇文章主要介紹了Java實(shí)現(xiàn)線程的四種方式解析,線程是進(jìn)程中的一個(gè)執(zhí)行單元,負(fù)責(zé)當(dāng)前進(jìn)程中程序的執(zhí)行,一個(gè)進(jìn)程中至少有一個(gè)線程,一個(gè)進(jìn)程中是可以有多個(gè)線程的,這個(gè)應(yīng)用程序也可以稱之為多線程程序,需要的朋友可以參考下
    2023-10-10
  • Jenkins集成sonarQube實(shí)現(xiàn)代碼質(zhì)量檢查過程圖解

    Jenkins集成sonarQube實(shí)現(xiàn)代碼質(zhì)量檢查過程圖解

    這篇文章主要介紹了Jenkins集成sonarQube實(shí)現(xiàn)代碼質(zhì)量檢查過程圖解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • maven插件assembly使用及springboot啟動(dòng)腳本start.sh和停止腳本 stop.sh

    maven插件assembly使用及springboot啟動(dòng)腳本start.sh和停止腳本 stop.sh

    這篇文章主要介紹了maven插件assembly使用及springboot啟動(dòng)腳本start.sh和停止腳本 stop.sh的相關(guān)資料,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Mybatis插入數(shù)據(jù)后自增id獲取方式

    Mybatis插入數(shù)據(jù)后自增id獲取方式

    在MyBatis中,獲取自增主鍵可以通過useGeneratedKeys屬性或selectKey節(jié)點(diǎn)實(shí)現(xiàn),useGeneratedKeys設(shè)置時(shí),需設(shè)置keyProperty指定主鍵字段,數(shù)據(jù)庫(kù)表也要相應(yīng)設(shè)置,selectKey節(jié)點(diǎn)可在插入操作后,通過特定SQL查詢獲得主鍵
    2024-09-09
  • 關(guān)于IDEA創(chuàng)建spark maven項(xiàng)目并連接遠(yuǎn)程spark集群?jiǎn)栴}

    關(guān)于IDEA創(chuàng)建spark maven項(xiàng)目并連接遠(yuǎn)程spark集群?jiǎn)栴}

    這篇文章主要介紹了IDEA創(chuàng)建spark maven項(xiàng)目并連接遠(yuǎn)程spark集群,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • Java遞歸算法詳解(動(dòng)力節(jié)點(diǎn)整理)

    Java遞歸算法詳解(動(dòng)力節(jié)點(diǎn)整理)

    Java遞歸算法是基于Java語言實(shí)現(xiàn)的遞歸算法。遞歸算法對(duì)解決一大類問題很有效,它可以使算法簡(jiǎn)潔和易于理解。接下來通過本文給大家介紹Java遞歸算法相關(guān)知識(shí),感興趣的朋友一起學(xué)習(xí)吧
    2017-03-03
  • Spring Boot項(xiàng)目利用Redis實(shí)現(xiàn)集中式緩存實(shí)例

    Spring Boot項(xiàng)目利用Redis實(shí)現(xiàn)集中式緩存實(shí)例

    本篇文章主要介紹了Spring Boot項(xiàng)目利用Redis實(shí)現(xiàn)集中式緩存實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Springboot 如何指定獲取自己寫的配置properties文件的值

    Springboot 如何指定獲取自己寫的配置properties文件的值

    這篇文章主要介紹了Springboot 如何指定獲取自己寫的配置properties文件的值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 聊聊SpringBoot自動(dòng)裝配的魔力

    聊聊SpringBoot自動(dòng)裝配的魔力

    這篇文章主要介紹了SpringBoot自動(dòng)裝配的魔力,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11

最新評(píng)論