国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

jdbc操作數據庫的基本流程詳解

2020-01-18 23:40:15
字體:
來源:轉載
供稿:網友
所有的JDBC應用程序都具有下面的基本流程:
  1、加載數據庫驅動并建立到數據庫的連接。
  2、執行SQL語句。
  3、處理結果。
  4、從數據庫斷開連接釋放資源。

下面我們就來仔細看一看每一個步驟:
其實按照上面所說每個階段都可得單獨拿出來寫成一個獨立的類方法文件。共別的應用來調用。

1、加載數據庫驅動并建立到數據庫的連接:
復制代碼 代碼如下:

  String driverName="com.mysql.jdbc.Driver";
  String connectiionString="jdbc:mysql://10.5.110.239:3306/test?"+"user=root&password=chen&characterEncoding=utf-8";
  Connection connection=null;
  try {
   Class.forName(driverName);//這里是所謂的數據庫驅動的加載
   connection=(Connection) DriverManager.getConnection(connectiionString);//這里就是建立數據庫連接
   System.out.println("數據庫連接成功");
  } catch (ClassNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return connection;

2、執行SQL語句:
在執行sql語句的時候,這里常見的有兩種類型的語句對象:
Statement:它提供了直接在數據庫中執行SQL語句的方法。對于那些只執行一次的查詢、刪除或者一種固定的sql語句來說已經足夠了。
復制代碼 代碼如下:

Statement statement=(Statement) dUtil.getConnection().createStatement();

   String sql="delete from diary where title="+"'"+title+"'";

   int count=statement.executeUpdate(sql);

   System.out.println("刪除成功");

Preparedstatement:這種語句對象用于那些需要執行多次,每次僅僅是數據取值不同的SQL語句,它還提供了一些方法,以便指出語句所使用的輸入參數。
復制代碼 代碼如下:

String sql="insert into diary(title,content,authorname,time) values(?,?,?,now())";
  try {
   PreparedStatement preparedStatement=(PreparedStatement) dUtil.getConnection().prepareStatement(sql);
   String title=diary.getTitle();
   String content=diary.getContent();
   String authorname=diary.getAuthorName();
   preparedStatement.setString(1, title);
   preparedStatement.setString(2, content);
   preparedStatement.setString(3, authorname);

3、處理結果:
復制代碼 代碼如下:

ResultSet resultSet=statement.executeQuery(sql);
   while (resultSet.next()) {
    Diary diary=new Diary();
    diary.setAuthorName(resultSet.getString("authorname"));
    diary.setContent(resultSet.getString("content"));
    diary.setTitle(resultSet.getString("title"));
    diary.setId(resultSet.getInt("id"));
    Date time=resultSet.getDate("time");

此處,應該知道的是:Statement執行sql語句的方法:insert、Update、delete語句是使用了Statement的executeUpdate方法執行的,返回結果是插入、更新、刪除的個數。而select語句執行較為特別是使用了Statement的executeQuery方法執行的。返回的結果存放在resultset結果集中,我們可以調用next()方法來移到結果集中的下一條記錄。結果集由行和列組成,各列數據可以通過相應數據庫類型的一系列get方法(如getString,getInt,getDate等等)來取得。

4、從數據庫斷開連接釋放資源:
在結果集、語句和連接對象用完以后,我們必須正確地關閉它們。連接對象、結果集對象以及所有的語句對象都有close()方法,通過調用這個方法,我們可以確保正確釋放與特定數據庫系統相關的所有資源。
復制代碼 代碼如下:

public static void closeConnection(ResultSet resultSet,PreparedStatement preparedStatement, Connection connection) throws SQLException {

  if (resultSet!=null) resultSet.close();
  if (preparedStatement!=null) preparedStatement.close();
  if(connection!=null&&connection.isClosed()==false) connection.close();
  System.out.println("數據庫關閉");

 }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阳西县| 麻江县| 青神县| 磐石市| 临江市| 大港区| 都安| 通山县| 张家口市| 荔浦县| 毕节市| 邹平县| 山丹县| 团风县| 马山县| 罗源县| 大同市| 兴国县| 宝应县| 六枝特区| 湘潭市| 邮箱| 江北区| 明溪县| 泗水县| 澄江县| 长治市| 富裕县| 舒城县| 郓城县| 建昌县| 绍兴县| 宁武县| 宜兰市| 通海县| 黑河市| 高要市| 丘北县| 锦屏县| 韩城市| 苏尼特左旗|