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   与特定数据库的连接

 

static Connection         

getConnection(String url, String user, String password)
 与数据库建立连接

 


  3.Statement   用于执行SQL 语句并返回它所生成结果的对象

 Statement

createStatement()
 创建一个 Statement 对象来将 SQL 语句发送到数据库。

 PreparedStatement

prepareStatement(String sql)
 创建一个 PreparedStatement 对象来将参数化的 SQL 语句发送到数据库。


    4.ResultSet 表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。

 ResultSet

executeQuery(String sql)
 执行给定的 SQL 语句,该语句返回单个 ResultSet 对象。

 int

executeUpdate(String sql)
  执行给定 SQL 语句,该语句可能为 INSERT、UPDATE 或 DELETE 语句,或者不返回任何内容的 SQL 语句(如 SQL DDL 语句)。返回的是受影响的行数。

 boolean

execute(String sql)
 执行给定的 SQL 语句,true代表返回了结果集(select),false代表没有结果集

 

 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的语句中,即使是相同一操作,
而由于每次操作的数据不同所以使整个语句相匹配的机会极小,几乎不太可能匹配

posted @ 2019-07-22 20:47  changlinlo  阅读(169)  评论(0编辑  收藏  举报