一、基于java项目用JDBC去操作数据库

1.1新建java项目

选择File–>New–>Project
在这里插入图片描述
选择java项目然后查看JDK版本一路Next最后Finish
在这里插入图片描述
建好之后项目结构如下
在这里插入图片描述

1.2 把基本的包构建出来

在这里插入图片描述

Controller 控制层
Dao数据层
Entity:实体类
Service:业务逻辑层
不管我们能不能用到 先把这些基本的包结构给构建出来,然后在对应的下边去写我们的码就可以

1.3创建数据表

1、打开我们的Microsoft SQL Server Management Studio
2、右键新建数据库
在这里插入图片描述

3、建表语句

CREATE TABLE [dbo].[user1] (
  [id] int  NOT NULL,
  [name] varchar(255) COLLATE Chinese_PRC_CI_AS  NULL
)

4、新建查询输入我们的建表语句
5、查看表

select * from user1

6、插入一条数据

insert into user1(id,name) values(1,'hello')

1.4导入JDBC驱动包

在这里插入图片描述

1.5开始写代码

1、我们现在dao层做一下数据库连接测试(测试一下连接数据库)
2、代码需要怎么写?
//前提 搞清楚需要用到的几个接口

 private static Connection con;  //数据库的连接 连接数据库的
 private static Statement sta;   //执行对象 用来执行SQL语句
 private static ResultSet rs;    //结果集 里边封装了查询的结果

//1、加载驱动类

   Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

//2、获取连接对象

Private static String url="jdbc:sqlserver://localhost:1433;DatabaseName=demo01";;
con = DriverManager.getConnection(url, "SQLServer登陆用户名(一般为sa)", "数据库密码");

//3、根据连接对象获取执行对象

 sta=con.createStatement();

//4、执行SQL语句处理返回值

  String sql="select *from user1";
  rs = sta.executeQuery(sql);

3、以上结果写完我们可以测试一下查询。
4、封装我们查询的结果
5、问题?这样写代码很冗余、加入我们要再 写一个插入、删除、修改。还需要重复之前的步骤吗?
当然不用我们可以进行工具类的提取!把以上获取连接对象 或者增删改查都封装起来!

完整代码:

DBManager

package utile;

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


public class DBManager {
    private Connection con;
    private Statement sta;
    private ResultSet rs;

    /********************静态块可以提高效率***********/
    static {
        try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    /**
     * 加载驱动程序
     */

    public Connection getConnection() {
/****1433是你自己的SQLserver端口号(默认是1433)*********/
/**************DatabaseName是你要连接的数据库名称*********/
        String url = "jdbc:sqlserver://localhost:1433;DatabaseName=test";
        try {
/**第一个sa是你的SQLserver用户名,第二个是此用户名所对应的密码***/
            con = DriverManager.getConnection(url, "sa", "123456rw");
            sta = con.createStatement();
            System.out.println("链接成功");
        } catch (SQLException e) {
            System.out.println("连接失败");
            e.printStackTrace();
        }

        return con;
    }

    /*public DBManager() {
        List<Connection> list = new ArrayList<Connection>();
        for (int i = 0; i < 5; i++) {
            list.add(this.getConnection());
        }
        this.con = list.get(0);
    }*/
    public int update(String sql) {
        int row = -1;
        con = getConnection();
        try {
            row = sta.executeUpdate(sql);
        } catch (SQLException e) {

            e.printStackTrace();
        } finally {
            this.close();
        }
        return row;
    }

    public ResultSet query(String sql) {
        con = getConnection();
        try {
            rs = sta.executeQuery(sql);
        } catch (SQLException e) {

            e.printStackTrace();
        }
        return rs;
    }

    public void close() {
        try {
            if (rs != null) {
                rs.close();
                rs = null;
            }
            if (sta != null) {
                sta.close();
                sta = null;
            }
            if (con != null) {
                con.close();
                con = null;
            }
        } catch (SQLException e) {

            e.printStackTrace();
        }
    }
}

写一个UserService去测试

package service;

import utile.DBManager;

import java.sql.ResultSet;
import java.sql.SQLException;

public class UserService {
    private static DBManager dbManager;

    public static void selectList() {
        dbManager=new DBManager();
        String sql="select * from user1";
        ResultSet resultSet=dbManager.query(sql);
        try {
            while (resultSet.next()){
                System.out.println(resultSet.getObject(2));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        UserService.selectList();
    }
}

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐