jdbc入门学习之sqlserver

什么是JDBC
  维基百科的简介:

  Java 数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。它JDBC是面向关系型数据库的。

  简单地说,就是用于执行SQL语句的一类Java API,通过JDBC使得我们可以直接使用Java编程来对关系数据库进行操作。通过封装,可以使开发人员使用纯Java API完成SQL的执行。

请求流程图如下:
这里写图片描述

一、准备工作(一):在学习之前,请先安装相应的数据库:如mysql 、oracle、sqlserver.那么我这里以sqlserver为例:
sqlserver 2008的下载路径链接:https://pan.baidu.com/s/1bpivIvP?qq-pf-to=pcqq.group&errno=0&errmsg=Auth%20Login%20Sucess&&bduss=&ssnerror=0
那么sqlserver的安装这里就不多说了:具体安装链接:https://jingyan.baidu.com/article/948f592434b407d80ef5f97d.html

二、JDBC常用接口和类
DriverManager:用于管理JDBC驱动的服务类。程序中使用该类的的主要功能是获取Connection对象,该类包含如下方法:
public static Connection getConnection(String url, String user, String password) throws SQLException
该方法获得url对应数据库的连接;

Connection:代表数据库连接对象,每个Connection代表一个物理连接会话。要想访问数据库,必须先得到数据库连接。该接口的常用方法如下:
Statement createStatement() throws SQLException; 该方法返回一个Statement对象;
PreparedStatement prepareStatement(String sql)throws SQLException;该方法返回预编译的Statement对象,即将SQL语句提交到数据库进行预编译;
CallableStatement prepareCall(String sql) throws SQLException;
该方法返回CallableStatement对象,该对象用于调用存储过程。
上面上个方法都返回用于执行sql语句的Statement对象,PreparedStatement和CallableStatement是Statement的子类,只有获得了Statement之后才可以执行sql语句;
除此之外,Connection还有如下几个用于控制事务的方法。
Savepoint setSavepoint() throws SQLException;创建一个保存点;
Savepoint setSavepoint(String name) throws SQLException;以指定名字来创建一个保存点;
void setTransactionIsolation(int level) throws SQLException;设置事务的隔离级别;
void rollback() throws SQLException;回滚事务;
void rollback(Savepoint savepoint) throws SQLException;将事务回滚到指定的保存点;
void setAutoCommit(boolean autoCommit) throws SQLException;关闭自动提交,打开事务;
void commit() throws SQLException;提交事务;

Statement:用于执行sql语句的工具接口。该对象既可以执行DDL,DCL语句,也可以用于执行DML语句,还可以用于执行sql查询。当执行sql查询时,返回查询到的结果集。它的常用方法如下:
ResultSet executeQuery(String sql) throws SQLException;该方法用于执行查询语句,并返回查询结果对应ResultSet对象。该方法只能用于执行查询语句。
int executeUpdate(String sql) throws SQLException;该方法用于执行DML语句,并返回受影响的行数;该方法也可用于执行DDL语句,执行DDL语句将返回0;
boolean execute(String sql) throws SQLException;改方法可以执行任何sql语句。如果执行后第一个结果为ResultSet对象,则返回true;如果执行后第一个结果为受影响的行数或没有任何结果,则返回false;

PreparedStatement:预编译的Statement对象,PreparedStatement是Statement的子接口,它允许数据库预编译sql语句(这些sql语句通常带有参数),以后每次只改变sql命令的参数,避免数据库每次都需要编译sql语句,无需再传入sql语句,
只要为预编译的sql语句传入参数值即可。所以它比Statement多了如下方法:
void setXxx(int parameterIndex, Xxx value):该方法根据传入参数值的类型不同,需要使用不同的方法。传入的值根据索引传给sql语句中指定位置的参数。

ResultSet:结果集对象。该对象包含访问查询结果的方法,ResultSet可以通过列索引或列名获得列数据。它包含了如下常用方法来移动记录指针。
void close() throws SQLException;释放ResultSet对象;
boolean absolute( int row ) throws SQLException;将结果集的记录指针移动到第row行,如果row是负数,则移动到倒数第row行,如果移动后的记录指针指向一条有效记录,则该方法返回true;
boolean next() throws SQLException;将结果集的记录指针定位到下一行,如果移动后的记录指针指向一条有效的记录,则该方法返回true;
boolean last() throws SQLException;将结果集的记录指针定位到最后一行,如果移动后的记录指针指向一条有效的记录,则该方法返回true;

三:连接sqlserver,并创建数据库与表,具体代码如下:

CREATE TABLE [dbo].[studentinfo] (
[id] int NOT NULL ,
[stuname] varchar(1) COLLATE Chinese_PRC_CI_AS NULL ,
[stupwd] varchar(1) COLLATE Chinese_PRC_CI_AS NULL ,
[stuclass] varchar(1) COLLATE Chinese_PRC_CI_AS NULL ,
[stuage] int NULL ,
[stugender] varchar(1) COLLATE Chinese_PRC_CI_AS NULL ,
CONSTRAINT [PK__studenti__3213E83F7F60ED59] PRIMARY KEY ([id])
)
ON [PRIMARY]
GO

插入相应的数据:

insert into studentinfo(id,stuage, stuname,stuclass,stugender,stupwd) values(1,'18','zhangsan','一年一班','1','123');
insert into studentinfo(id,stuage, stuname,stuclass,stugender,stupwd) values(2,'19','lisi','一年一班','1','123');
insert into studentinfo(id,stuage, stuname,stuclass,stugender,stupwd) values(3,'20','wangwu','一年一班','1','123');

四:创建一个java项目:
JDBC编程的六个步骤:
导入sqlserver2008所需要的jar包:sqljdbc2008.jar.
(1).注册驱动
(2).连接数据库
(3).创建搬运工statement

(4).搬运数据,执行SQL语句

(5).处理结果集

(6).关闭连接

public class JDBCUtils {
    static String driverClass = null;
    static String url = null;
    static String user = null;
    static String password = null;

    static {
        // 获得配置文件中的内容
        driverClass = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
        url = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
        user = "sa";
        password = "123456";

        // 注册驱动
        try {
            Class.forName(driverClass);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    // 获得连接
    public static Connection getConnection() throws Exception {
        // 获得连接
        Connection conn = DriverManager.getConnection(url, user, password);
        return conn;
    }

猜你喜欢

转载自blog.csdn.net/qq_30764991/article/details/80719614