突突英雄

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

JDBC:JAVA DATA BASE CONNECTIVITY

1、SQL语言

(1) 数据定义语言:create、alter、drop

(2) 数据操纵语言:select、insert、update、delete

① select:select“字段”from“表名”where“条件” order by“字段名”

② insert:insert into 表名[(字段1,字段2···)] values(属性值1,属性值2···)

③ update:update“表名”set“字段”=“新字段”where“条件表达式”

④ delete:delete from 表名 where 条件表达式

(3) 数据控制语言:grant、revoke

(4) 事务控制语言:commit、rollback

2、JDBC-ODBC桥

(1) JDBC-ODBC桥:JDBC-ODBC桥是一个JDBC驱动程序,完成了从JDBC操作到ODBC操作之间的转换工作,允许JDBC驱动程序被用作ODBC的驱动程序。ODBC:开放数据链接,是为了异构数据库的数据共享而生。使用JDBC-ODBC桥连接数据库的步骤如下:

① 首先加载JDBC-ODBC桥的驱动程序:Class.forName(“sun.jdbC.odbc.Jdbc.OdbcDriver”);

② 使用java.sql包中的Connection接口,并通过DriverManager类的静态方法getConnection()创建连接对象:Connection conn=DriverManager.getConnection(“jdbc:odbc:数据源名字”,“user name”,“password”);

③ 向数据库发送SQL语句。使用Statement接口声明一个SQL语句对象,通过刚才创建的conn的creatStatement()方法创建SQL对象:Statement Sql=conn.creatStatement();JDBC-ODBC桥作为连接数据库的过度技术,现在使用较少,使用较多的是JDBC技术,但是这并不表示JDBC-ODBC技术已经被淘汰,它可以访问几乎所有的数据库。

3、JDBC是一套面向对象的应用程序接口,指定了统一的访问各种关系型数据库的标准。但是sql语句是关系型语句,所以使用JDBC连接数据库实质上也是面向关系的。JDBC的主要任务:与数据库建立连接发送sql返回结果。

4、JDBC中常用的类和接口

(1) Connection接口

Connection接口代表特定的数据库的连接,在连接上下文中执行SQL语句并返回结果。

(2)Statement接口

Statement接口用于在已经建立连接的基础上向数据库发送SQL语句,在JDBC中有三种Statement、PerparedStatement、callabLeStatement。Statement用于执行不带参数的简单的SQL语句;PerparedStatement用于执行动态的SQL语句;callabLeStatement继承了PreparedStatement,用于执行对数据库存储过程的调用。

DriverManager类用来管理数据库中的所有驱动程序。它是JDBC的管理层,作用于用户和驱动程序之间,跟踪可用的驱动程序,并在数据库的驱动程序之间建立连接。

ResultSet接口类似于一个临时表,用来暂时存放数据库查询操作所获得的结果集。

 

数据库操作

连接数据库,有三个步骤:

1、使用Class.forName();获得驱动器

2、使用DriverManager.getConnection通过访问数据库的URL获取数据库连接对象

3、创建本类对象调用getConnection方法。

向数据库发送sql语句,两个步骤:

1、声明一个Statement:

Statement statement=con.createStatement();

2、使用statement的execute方法.

 

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * 实现给表中添加数据
 */
public class SQLTest {
    public static void main(String[] args) {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/kk_1","root",
                    "MySQL1998");
            Statement statement=conn.createStatement();
            String str="insert into k_table(username,pwd,regtime) values ('赵大帅',7454,now())";
            //statement.execute(str);
            //测试SQL注入
            //String id=5+"";//目的是将5转化成字符串
            //SQL注入是指在拼接字符串的时候可能会有而已代码,比如String id="5 or 1=1"那么str就变成了delete from
            // k_table where id=5 or 1=1,这就是发生了SQL注入。
            String str2="delete from k_table where id=1";
            //statement.execute(str2);
            System.out.println("OK");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }


    }
}

 

 

 

 

 

 

posted on 2019-04-10 22:11  突突英雄  阅读(341)  评论(0编辑  收藏  举报