Java Code
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
JDBC connection database • Create a program to connect to the database with JDBC, including 7 steps: 1. Load the JDBC driver: Before connecting to the database, first load the driver of the database you want to connect to the JVM (Java Virtual Machine). The static method forName( String className ) of the java.lang.Class class is implemented. For example: try { //Load the driver class of MySql Class.forName( "com.mysql.jdbc.Driver" ) ; } catch (ClassNotFoundException e) { System.out.println( "Could not find the driver class, failed to load the driver !" ); e.printStackTrace() ; } After successful loading, the instance of the Driver class will be registered in the DriverManager class. 2. Provide the URL of JDBC connection • The connection URL defines the protocol, sub-protocol, and data source identification when connecting to the database. •Writing form: Protocol: Sub-Protocol: Data Source Identification Protocol: Always start with jdbc in JDBC Sub-Protocol: is the name of the bridge connection driver or database management system. Data source identification: mark the address and connection port where the database source is found. For example: (MySql connection URL) jdbc:mysql: //localhost:3306/test?useUnicode=true&characterEncoding=gbk ; useUnicode=true: indicates the use of the Unicode character set. If characterEncoding is set to gb2312 or GBK, this parameter must be set to true. characterEncoding=gbk: Character encoding method. 3. Create a database connection • To connect to a database, you need to request and obtain a Connection object from java.sql.DriverManager, which represents a database connection. • Use DriverManager's getConnectin( String url , String username , String password ) method to obtain by passing in the specified path of the database to be connected, the username and password of the database. For example: //Connect to MySql database, username and password are both root String url = "jdbc:mysql://localhost:3306/test" ; String username = "root" ; String password = "root" ; try { Connection con = DriverManager.getConnection(url , username , password ) ; } catch (SQLException se) { System.out.println( "Database connection failed!" ); se.printStackTrace() ; } 4. Create a Statement • To execute a SQL statement, you must obtain an instance of java.sql.Statement, which is divided into the following 3 Types: 1. Execute static SQL statements. Usually implemented through a Statement instance. 2. Execute dynamic SQL statements. Usually implemented through a PreparedStatement instance. 3. Execute the database stored procedure. Usually implemented through a CallableStatement instance. Specific implementation: Statement stmt = con.createStatement() ; PreparedStatement pstmt = con.prepareStatement(sql) ; CallableStatement cstmt = con.prepareCall( "{CALL demoSp(? , ?)}" ) ; 5. Execute SQL statement Statement The interface provides three methods for executing SQL statements: executeQuery, executeUpdate and execute 1. ResultSet executeQuery( String sqlString): Execute the SQL statement querying the database and return a result set (ResultSet) object. 2. int executeUpdate( String sqlString): used to execute INSERT, UPDATE or DELETE statements and SQL DDL statements, such as: CREATE TABLE and DROP TABLE, etc. 3. execute(sqlString): used to execute multiple result sets, multiple updates count or a combination of both 语句。 具体实现的代码: ResultSet rs = stmt.executeQuery( "SELECT * FROM ..." ) ; int rows = stmt.executeUpdate( "INSERT INTO ..." ) ; boolean flag = stmt.execute( String sql) ; 6、处理结果 两种情况: 1、执行更新返回的是本次操作影响到的记录数。 2、执行查询返回的结果是一个ResultSet对象。 • ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些行中数据的访问。 • 使用结果集(ResultSet)对象的访问方法获取数据: while (rs.next()) { String name = rs.getString( "name" ) ; String pass = rs.getString( 1 ) ; // 此方法比较高效 } (列是从左到右编号的,并且从列1开始) 7、关闭JDBC对象 操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声 明顺序相反: 1、关闭记录集 2、关闭声明 3、关闭连接对象 if (rs != null) // 关闭记录集 { try { rs.close() ; } catch (SQLException e) { e.printStackTrace() ; } } if (stmt != null) // 关闭声明 { try { stmt.close() ; } catch (SQLException e) { e.printStackTrace() ; } } if (conn != null) // 关闭连接对象 { try { conn.close() ; } catch (SQLException e) { e.printStackTrace() ; } } |