Java DataBase(JDBC)

Posted CaiCongyu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java DataBase(JDBC)相关的知识,希望对你有一定的参考价值。

A brief review of Database

Database (DB):

  an organised collection of data

  Relational DBs (first published by Edgar F. Codd (IBM) in 1970) store data in:

  tables A table in a database consists of:

  rows & columns

    Rows: records

    Columns: attributes of the records

  SQL:

  Structured Query Language, The industry standard database query language (relational Database)

A brief review of Database (cont.)

  SELECT NAME, ID FROM STUDENT WHERE GENDER=‘MALE’;

  INSERT INTO STUDENT VALUES ( 6, ‘MARY’, ‘FEMALE’ );

   DELETE FROM STUDENT WHERE NAME=‘JERRY’; DROP TABLE STUDENT;

Overview of JDBC cont.

  Java DataBase Connectivity: java.sql

  Major components in JDBC:

  JDBC API gives access of programming data from the Java. By using JDBC API, applications can execute SQL statements and retrieve results and updation to the database. It standardise:

  -Way to establish connection to database

  -Approach to initiating queries

  -The data structure of query result

  -It does NOT standardise SQL syntax

  -JDBC Driver Manager is the class in JDBC API.

  -The objects of this class can connect Java applications to a JDBC driver

 

How to use JDBC

  Establishing a connection to DB

  Create a Statement instance to conduct SQL statements

  Execute queries from JDBC

  Receive, hold and process query results from DB

  Check meta-information of results & databases

 

1)Establish a connection

  Creates instance of a Connection object

  Connection conn = DriverManager.getConnection( “url”, “username”, “password”); [throws SQLException]

  String url= "jdbc:derby: // localhost:1527/ CarDB; create=true";

return Connection object:Creates a Statement object for sending SQL statements to the database.

2)Statement

  Statement: object that can accept and execute a string that is a SQL statement

  Statement statement = conn.createStatement();

 

  Executing statements:

  statement.executeXXXXX("a SQL statement");

  exa:

  executeUpdate: for database modifications //数据库的修改

  executeQuery: for database queries //数据库的查询

  Execute DB update statement: 

  statement.executeUpdate(“CREATE TABLE CARTABLE”);

例子:

  public void createTable() {

     try{

    Statement statement=conn.createStatement(); //创建一个新的statement

    String newTable="cartable"; //tablename

    statement.executeUpdate("drop table if exists "+newTable); //更新

    String sqlCreateTable="CREATE TABLE "+newTable+" (ID INT, " + "MAKE VARCHAR(50), MODEL VARCHAR(50), PRICE INT )";

    statement.executeUpdate(sqlCreateTable);//更新数据库

    } catch (SQLException ex) {

     System.err.println("SQLException: " + ex.getMessage());

    }

  }

Query Statement //数据查询  

  Execute DB Query statement:

  ResultSet: an object of type ResultSet is like a cursor(光标)

  next() advances cursor to next tuple(数组):

  The first time next() returns the first tuple

  If no more tuples then next() returns FALSE

  Accessing components of a tuple:

  getXXX(attribute name OR column index)

 

 

  ResultSet rs=Statement.executeQuery(“SELECT * FROM CAR”);

  while (rs.next()) {

  String attribute1= rs.getString(“A1”);

  int attribute2= rs.getInt (2);

   }

  More methods control the cursor:

   previous(): moves the cursor backwards one row.Returns true if the cursor is now positioned on a row and false if the cursor is positioned before the first row.

   first()/last(): moves the cursor to the first/last row

   afterLast(): moves the cursor to the end of this ResultSet object, just after the last row

   beforeFirst(): moves the cursor to the front of this ResultSet object, just before the first row

 

  public ResultSet getQuery() { //数据库结果集的数据表

   ResultSet rs=null;

  try {

  Statement statement=mysqlConn.createStatement();

  String sqlQuery="select model, price from car " + "where brand=‘toyota‘“;

  rs=statement.executeQuery(sqlQuery);

  while( rs.next() ) {

  String model= rs.getString ("model");

  // String model= rs.getString (1);

   int price = rs.getInt(2);

   System.out.println(model+": $"+price);

  }

  System.out.println("Table created");

   } catch (SQLException ex) {

   Logger.getLogger(DBOperations.class.getName()).log(Level.SEVERE, null, ex);

   }

  return(rs);

   }

 

 

ResultSet metadata:

  ResultSetMetaData: objects that can hold ResultSet metadata

  ResultSetMetaData rsmd = rs.getMetaData();

  To get number of columns: rsmd.getColumnCount();

  To get the table name of a given column in the result set: rsmd.getTableName(int);

  To get data type of a given column: rsmd.getColumnType(int);

 

 

Closing:

Close ResultSet:

  rs.close( );

Close Statement:

  statement.close( );

Close Connection:

  conn.close( );

A statement will be closed if the connection instance it belongs to is closed;

A resultset will be closed if the statement instance it holds results for is closed.

 

以上是关于Java DataBase(JDBC)的主要内容,如果未能解决你的问题,请参考以下文章

Java DataBase(JDBC)

JDBC连接数据库(Java DataBase Connectivity,java)

JDBC(Java Database Connectivity)编写步骤

学习笔记JDBC数据库连接技术(Java Database Connectivity)

Java web004——jdbc(Java Database Connectivity)包括MySQL的安装和使用教程

spring中jdbc的使用心得