欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java語(yǔ)言實(shí)現(xiàn)對(duì)MySql數(shù)據(jù)庫(kù)中數(shù)據(jù)的增刪改查操作的代碼

 更新時(shí)間:2016年12月27日 16:32:29   作者:i逆天耗子丶  
這篇文章主要介紹了Java語(yǔ)言實(shí)現(xiàn)對(duì)MySql數(shù)據(jù)庫(kù)中數(shù)據(jù)的增刪改查操作的代碼,實(shí)現(xiàn)了連接數(shù)據(jù)庫(kù),和數(shù)據(jù)庫(kù)的增刪改查操作,有興趣的可以了解一下。

簡(jiǎn)單說(shuō)操作的步驟:

1.連接數(shù)據(jù)庫(kù)

2.將SQL語(yǔ)句發(fā)送到數(shù)據(jù)庫(kù)

3.執(zhí)行SQL語(yǔ)句

這里舉個(gè)例子:

在一個(gè)數(shù)據(jù)庫(kù)中有個(gè)students表,表中有學(xué)號(hào)(Id),姓名(Name),性別(Sex),地址(Address),電話(Phone),專(zhuān)業(yè)(Dept)。

這里把這個(gè)表寫(xiě)成一個(gè)學(xué)生信息類(lèi)(Info_student)

(請(qǐng)先確??戳死诱f(shuō)明,不然代碼有的地方可能看不明白)

要實(shí)現(xiàn)操縱我們首先得連接數(shù)據(jù)庫(kù),因?yàn)槊總€(gè)操作都要進(jìn)行連接操作,所以我們直接把連接的操作封裝在一個(gè)類(lèi)中,需要連接的時(shí)候直接調(diào)用可。

數(shù)據(jù)庫(kù)連接類(lèi):

import java.sql.Connection; 
import java.sql.DriverManager; 
 
public class DB_Helper { 
 
  public static Connection connect = null; 
 
  static { 
    try { 
      Class.forName("com.mysql.jdbc.Driver"); // 加載MYSQL JDBC驅(qū)動(dòng)程序 
      // 觀察以下2個(gè)語(yǔ)句的差別, 
      // connect = 
      // DriverManager.getConnection("jdbc:mysql://localhost:3306/students", "root", ""); 
      connect = DriverManager.getConnection( 
          "jdbc:mysql://localhost:3306/students?useUnicode=true&characterEncoding=utf-8", "root", ""); 
 
      System.out.println("Success loading Mysql Driver!"); 
    } catch (Exception e) { 
      System.out.print("Error loading Mysql Driver!"); 
      e.printStackTrace(); 
    } 
  } 
 
  public static Connection getConnection() { 
    return connect; 
  } 
} 

數(shù)據(jù)庫(kù)已經(jīng)連接了,那么接下來(lái)就是要發(fā)送SQL語(yǔ)句和執(zhí)行語(yǔ)句。

發(fā)送語(yǔ)句用到了PreparedStatement對(duì)象和Connection對(duì)象的操作prepareStatement()

執(zhí)行語(yǔ)句用到PreparedStatement對(duì)象的操作execute()

提示:以下是一些對(duì)象的說(shuō)明,可以先看代碼,遇到的時(shí)候再回來(lái)看。

************************

PreparedStatement

表示預(yù)編譯的 SQL 語(yǔ)句的對(duì)象。

SQL 語(yǔ)句被預(yù)編譯并存儲(chǔ)在 PreparedStatement 對(duì)象中。然后可以使用此對(duì)象多次高效地執(zhí)行該語(yǔ)句。

*************************

Connection

與特定數(shù)據(jù)庫(kù)的連接(會(huì)話)。在連接上下文中執(zhí)行 SQL 語(yǔ)句并返回結(jié)果。

Connection 對(duì)象的數(shù)據(jù)庫(kù)能夠提供描述其表、所支持的 SQL 語(yǔ)法、存儲(chǔ)過(guò)程、此連接功能等等的信息。

**********************

以下代碼是要實(shí)現(xiàn)在數(shù)據(jù)庫(kù)中實(shí)現(xiàn)學(xué)生信息的增刪改查操作。

一、增

public void add(Info_student student) throws SQLException{ 
  // 與特定數(shù)據(jù)庫(kù)的連接(會(huì)話)。 
  Connection conn = (Connection) DB_Helper.getConnection(); 
   
  String sql = "insert into student(Sno,Sname,Ssex,Saddress,Sphone,Sdept) values(?,?,?,?,?,?)"; 
   
  // 創(chuàng)建一個(gè) PreparedStatement 對(duì)象來(lái)將參數(shù)化的 SQL 語(yǔ)句發(fā)送到數(shù)據(jù)庫(kù)。 
  PreparedStatement ptmt = (PreparedStatement) conn.prepareStatement(sql); 
  /* 
   * void setBigDecimal(int parameterIndex,BigDecimal x)throws SQLException 
   * 將指定參數(shù)設(shè)置為給定 Java String 值。在將此值發(fā)送給數(shù)據(jù)庫(kù)時(shí),驅(qū)動(dòng)程序?qū)⑺D(zhuǎn)換成一個(gè) SQL VARCHAR 
   * 或 LONGVARCHAR 值(取決于該參數(shù)相對(duì)于驅(qū)動(dòng)程序在 VARCHAR 值上的限制的大小)。 
   */ 
  ptmt.setString(1, student.getId()); 
  ptmt.setString(2, student.getName()); 
  ptmt.setString(3, student.getSex()); 
  ptmt.setString(4, student.getAddress()); 
  ptmt.setString(5, student.getPhone()); 
  ptmt.setString(6, student.getDept()); 
   
  // 在此 PreparedStatement 對(duì)象中執(zhí)行 SQL 語(yǔ)句 
  ptmt.execute(); 
} 

二、刪

public void delete(String id) throws SQLException{ 
  Connection conn = (Connection) DB_Helper.getConnection(); 
  String sql = "delete from student where Sno=?"; 
  PreparedStatement ptmt = (PreparedStatement) conn.prepareStatement(sql); 
   
  ptmt.setString(1, id); 
   
  ptmt.execute(); 
} 

三、改

public void update(Info_student student) throws SQLException{ 
  Connection conn = (Connection) DB_Helper.getConnection(); 
  String sql = "update student set Sname=?,Ssex=?,Saddress=?,Sphone=?,Sdept=? where Sno=?"; 
 
  PreparedStatement ptmt = (PreparedStatement) conn.prepareStatement(sql); 
  ptmt.setString(1, student.getName()); 
  ptmt.setString(2, student.getSex()); 
  ptmt.setString(3, student.getAddress()); 
  ptmt.setString(4, student.getPhone()); 
  ptmt.setString(5, student.getDept()); 
  ptmt.setString(6, student.getId()); 
 
  ptmt.execute(); 
} 

四、查

public Info_student search(String id) throws SQLException{ 
  Info_student student = null; 
   
  Connection conn = (Connection) DB_Helper.getConnection(); 
  String sql = "select * from student where Sno=?"; 
  PreparedStatement ptmt = (PreparedStatement) conn.prepareStatement(sql); 
   
  ptmt.setString(1, id); 
   
  /* 
   * ResultSet executeQuery()throws SQLException 
   * 在此 PreparedStatement 對(duì)象中執(zhí)行 SQL 查詢(xún),并返回該查詢(xún)生成的 ResultSet 對(duì)象。 
   */ 
   
  /* 
   * public interface ResultSet extends Wrapper 
   * 表示數(shù)據(jù)庫(kù)結(jié)果集的數(shù)據(jù)表,通常通過(guò)執(zhí)行查詢(xún)數(shù)據(jù)庫(kù)的語(yǔ)句生成。 ResultSet 對(duì)象具有指向其當(dāng)前數(shù)據(jù)行的光標(biāo)。 
   * 最初,光標(biāo)被置于第一行之前。next 方法將光標(biāo)移動(dòng)到下一行;因?yàn)樵摲椒ㄔ?ResultSet 對(duì)象沒(méi)有下一行時(shí) 
   * 返回 false,所以可以在 while 循環(huán)中使用它來(lái)迭代結(jié)果集。 
   * 
   */ 
  ResultSet rs = ptmt.executeQuery(); 
 
  /* 
   * boolean next()throws SQLException 
   * 將光標(biāo)從當(dāng)前位置向前移一行。 
   * ResultSet 光標(biāo)最初位于第一行之前; 
   * 第一次調(diào)用 next 方法使第一行成為當(dāng)前行; 
   * 第二次調(diào)用使第二行成為當(dāng)前行,依此類(lèi)推。 
   */ 
 
  while(rs.next()){ 
    student = new Info_student(); 
    student.setId(rs.getString("Sno")); 
    student.setName(rs.getString("Sname")); 
    student.setSex(rs.getString("Ssex")); 
    student.setAddress(rs.getString("Saddress")); 
   
    student.setPhone(rs.getString("Sphone")); 
    student.setDept(rs.getString("Sdept")); 
  } 
  return student; 
   
} 

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JAVA時(shí)間存儲(chǔ)類(lèi)Period和Duration使用詳解

    JAVA時(shí)間存儲(chǔ)類(lèi)Period和Duration使用詳解

    這篇文章主要為大家介紹了JAVA時(shí)間存儲(chǔ)類(lèi)Period和Duration使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Java實(shí)戰(zhàn)在線選課系統(tǒng)的實(shí)現(xiàn)流程

    Java實(shí)戰(zhàn)在線選課系統(tǒng)的實(shí)現(xiàn)流程

    讀萬(wàn)卷書(shū)不如行萬(wàn)里路,只學(xué)書(shū)上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+jsp+mysql+maven實(shí)現(xiàn)一個(gè)在線選課系統(tǒng),大家可以在過(guò)程中查缺補(bǔ)漏,提升水平
    2021-11-11
  • 詳解Java中static關(guān)鍵字和內(nèi)部類(lèi)的使用

    詳解Java中static關(guān)鍵字和內(nèi)部類(lèi)的使用

    這篇文章主要為大家詳細(xì)介紹了Java中static關(guān)鍵字和內(nèi)部類(lèi)的使用,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-08-08
  • 使用maven?shade插件解決項(xiàng)目版本沖突詳解

    使用maven?shade插件解決項(xiàng)目版本沖突詳解

    這篇文章主要為大家介紹了使用maven?shade插件解決項(xiàng)目版本沖突詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • IntelliJ IDEA修改內(nèi)存大小,使得idea運(yùn)行更流暢

    IntelliJ IDEA修改內(nèi)存大小,使得idea運(yùn)行更流暢

    今天小編就為大家分享一篇關(guān)于IntelliJ IDEA修改內(nèi)存大小,使得idea運(yùn)行更流暢的文章,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-10-10
  • Java mockito單元測(cè)試實(shí)現(xiàn)過(guò)程解析

    Java mockito單元測(cè)試實(shí)現(xiàn)過(guò)程解析

    這篇文章主要介紹了Java mockito單元測(cè)試實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Linux服務(wù)器如何部署java項(xiàng)目

    Linux服務(wù)器如何部署java項(xiàng)目

    這篇文章主要介紹了Linux服務(wù)器如何部署java項(xiàng)目問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • SpringBoot中yml的數(shù)據(jù)綁定示例

    SpringBoot中yml的數(shù)據(jù)綁定示例

    本文主要介紹了SpringBoot中yml的數(shù)據(jù)綁定示例,借助于YAML的簡(jiǎn)潔語(yǔ)法和結(jié)構(gòu)化特性,我們能夠輕松地管理應(yīng)用程序的配置信息,使得配置文件更加清晰易讀,感興趣的可以了解一下
    2023-11-11
  • SpringBoot使用Mybatis&Mybatis-plus文件映射配置方法

    SpringBoot使用Mybatis&Mybatis-plus文件映射配置方法

    這篇文章主要介紹了SpringBoot使用Mybatis&Mybatis-plus文件映射配置方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-05-05
  • JAVA 十六進(jìn)制與字符串的轉(zhuǎn)換

    JAVA 十六進(jìn)制與字符串的轉(zhuǎn)換

    筆者前幾日在開(kāi)服過(guò)程中需要將字符串轉(zhuǎn)化成為16進(jìn)制的字符串,在網(wǎng)上找到了一些方法嘗試之后,均發(fā)現(xiàn)存在一個(gè)問(wèn)題-->字符串轉(zhuǎn)為16進(jìn)制后再轉(zhuǎn)回來(lái),英文正常,中文出現(xiàn)亂碼
    2009-05-05

最新評(píng)論