jdbc
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与数据库的连接(会话)
几个核心的接口(类)
1.DriverManager 驱动管理类
2.Connection 与特定数据库的连接
|
3.Statement 用于执行SQL 语句并返回它所生成结果的对象
createStatement() |
|
prepareStatement(String sql) |
4.ResultSet 表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。
executeQuery(String sql) |
|
int |
executeUpdate(String sql) |
boolean |
execute(String sql) |
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形式获取结果集当前行指定列名值 |
jdbc 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的语句中,即使是相同一操作,
而由于每次操作的数据不同所以使整个语句相匹配的机会极小,几乎不太可能匹配