1. java 数据库连接
一种用于执行sql 语句的java API,可以为多种数据库提供统一的访问,由一套java 类和接口组成,这些接口的实现类有数据库厂商提供(包含在jar包里),我们使用只需要了解每个接口,以及接口里的方法就可以。
Java data base Connectivity
用java 代码操作 数据库
是sun提供的一套api接口
入门Demo
步骤:
*加载驱动类 Class.forName(“类名”)
*获取连接 DriverManager.getConnection() 得到 Connection
*得到执行sql 的对象 Statement
*执行sql语句,返回结果 ResultSet
*处理结果
*关闭资源 .close()
核心的接口
Connection
与数据库的连接(会话)
3.几个核心的接口(类)
DriverManager 驱动管理类
|
Connection 与特定数据库的连接
createStatement() | |
prepareStatement(String sql) |
Statement 用于执行SQL 语句并返回它所生成结果的对象
executeQuery(String sql) | |
int | executeUpdate(String sql) |
boolean | execute(String sql) |
ResultSet
表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。
boolean | next() |
boolean next() | 将光标从当前位置向下移动一行 |
boolean previous() | 游标从当前位置向上移动一行 |
void close() | 关闭ResultSet 对象 |
int getInt(int colIndex) | 以int形式获取结果集当前行指定列号值 |
int getInt(String colLabel) | 以int形式获取结果集当前行指定列名值 |
float getFloat(int colIndex) | 以float形式获取结果集当前行指定列号值 |
float getFloat(String colLabel) | 以float形式获取结果集当前行指定列名值 |
String getString(int colIndex) | 以String 形式获取结果集当前行指定列号值 |
String getString(String colLabel) | 以String形式获取结果集当前行指定列名值 |
2.url
JDBC的URL=协议名+子协议名+数据源名。
a 协议名总是“jdbc”。
b 子协议名由JDBC驱动程序的编写者决定。
c 数据源名也可能包含用户与口令等信息;这些信息也可单独提供。
几种常见的数据库连接
-------------------------------oracle------------------
驱动:oracle.jdbc.driver.OracleDriver
URL:jdbc:oracle:thin:@machine_name:port:dbname
注:machine_name:数据库所在的机器的名称;
port:端口号,默认是1521
-------------------------------mysql-------------------
驱动:com.mysql.jdbc.Driver
URL:jdbc:mysql://machine_name:port/dbname
注:machine_name:数据库所在的机器的名称;
port:端口号,默认3306
---------------------------SQL Server------------------
驱动:com.microsoft.jdbc.sqlserver.SQLServerDriver
URL:jdbc:microsoft:sqlserver://<machine_name><:port>;DatabaseName=<dbname>
注:machine_name:数据库所在的机器的名称;
port:端口号,默认是1433
--------------------------DB2--------------------------
驱动:com.ibm.db2.jdbc.app.DB2Driver
URL:jdbc:db2://<machine_name><:port>/dbname
注:machine_name:数据库所在的机器的名称;
port:端口号,默认是5000
-------------------------------------------------------
3. PreparedStatement
1.PreparedStatement 接口继承 Statement接口
2.PreparedStatement提高了代码的可读性和可维护性
3.防止sql注入,提高了安全性
4.可重复用,提高了SQL语句执行的性能
因为预编译语句有可能被重复调用.所以语句在被DB的编译器编译后的执行代码被缓存下来,那么下次调用时只要是相同的预编译语句就不需要编译,只要将参数直接传入编译过的语句执行代码中(相当于一个函数)就会得到执行.这并不是说只有一个Connection中多次执行的预编译语句被缓存,而是对于整个DB中,只要预编译的语句语法和缓存中匹配.那么在任何时候就可以不需要再次编译而可以直接执行.而statement的语句中,即使是相同一操作,而由于每次操作的数据不同所以使整个语句相匹配的机会极小,几乎不太可能匹配