(一)JDBC:java连接MySQL数据库

JDBC:java连接MySQL数据库

首先,java连接MySQl数据库之前需要安装对应的驱动jar:

  • 需要导入驱动jar包 mysql-connector-java-8.0.22.jar

    1.1–复制mysql-connector-java-8.0.22.jar到项目下。 注:任何一个包都可以,也可以自己建一个包。

    1.2–右键——>add as Library

  • 注册驱动

  • 获取数据库连接对象 Connection

  • 定义sql

  • 获取执行sql语句的对象 Statement

  • 执行sql,接受返回结果

  • 处理结果

  • 释放资源

示例代码:(函数都在Test类中)

获取连接

//导入对应的包
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Test{
    //连接数据库,封装成函数方便调用
    public static Connection getconn(){
        Connection conn=null; //获取数据库连接对象
		
        String user="root";//MySQL用户名
        String password="";//密码
        //mysql数据库的url    supermarket为数据库名
        String url="jdbc:mysql://localhost:3306/supermarket";
        
        //由于调用包,可能会出现异常,所以放在try/catch块里面
        try{
            //加载驱动
            Class.forName("com.mysql.cj.jdbc.Driver");//mysql对应的驱动
            //获取数据库连接对象
            coon =DriverN=Manager.getConnection(url,user,password);
        } catch (SQLException e){ //获取执行sql语句的异常
           e.printStackTrace();//打印异常信息
        } catch (ClassNotFoundException e){
            e.printStackTrace();
        }
        
        return conn;//返回数据库连接对象
    }
    
}

执行SQL语句

其中,Goods为数据表,有gid, gname, gprice, gnum列。

执行增加,更新类sql语句:

int rs=pstmt.executeUpdate(); 返回结果为整数,rs>0(执行成功)

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public boolean addGoods(Goods goods){
	boolean bool=false;
    conn=Test.getconn();//链接数据库
    String sql="INSERT INTO GOODS (GNAME,GPRICE,GNUM) VALUES (?,?,?)";
    
    try{
            pstmt=conn.prepareStatement(sql);//准备sql语句
            pstmt.setString(1,goods.getGname());//向第一个?设置值
            pstmt.setDouble(2,goods.getGprice());
            pstmt.setInt(3,goods.getGnum());
        
			//执行增加,更新类sql语句,  返回结果为整数,rs>0,执行成功
            int rs=pstmt.executeUpdate();
            if (rs > 0){
                bool = true;
            }
        } catch (SQLException e){
            e.printStackTrace();
        } finally {
            DbClose.addClose(pstmt,conn);//关闭连接
        }

        return bool;
}

​ 执行查询类sql语句:

​ 执行:pstmt.executeQuery(); 返回对象

public ArrayList<Goods> displayGoods(){
        ArrayList<Goods> goodsList = new ArrayList<Goods>();
        conn = DbConn.getconn();
        String sql = "SELECT * FROM GOODS";
        try{
            pstmt = conn.prepareStatement(sql);
            rs=pstmt.executeQuery();
            while (rs.next()){
                int gid = rs.getInt(1);
                String gname = rs.getString(2);
                double gprice = rs.getDouble("gprice"); 		//双引号+主键名,也可用数字表示.
                int gnum = rs.getInt(4);

                Goods goods = new Goods(gid,gname,gprice,gnum);	//创建Goods对象,并赋值.
                goodsList.add(goods);
            }
        } catch (SQLException e){
            e.printStackTrace();
        } finally {
            DbClose.queryClose(pstmt,rs,conn);
        }

        return  goodsList;
    }

关闭连接

public static void addClose(PreparedStatement pstmt, Connection conn){
    //多个 try-catch 出发点:安全
    
   try{
       if(pstmt!=null){
           pstmt.close();
     	}
   } catch (SQLException e1){
       e1.printStackTrace();
   }

    try {
        if(conn!=null){
            conn.close();
        }
    } catch (SQLException e){
        e.printStackTrace();
    }
}
public static void queryClose(PreparedStatement pstmt, ResultSet rs,Connection conn){
        //ResultSet rs  结果集(ResultSet)是数据中查询结果返回的一种对象
        try{
            if(pstmt!=null){
                pstmt.close();
            }
        } catch (SQLException e1){
            e1.printStackTrace();
        }

        try{
            if(rs!=null){
                rs.close();
            }
        } catch (SQLException e){
            e.printStackTrace();
        }

        try {
            if(conn!=null){
                conn.close();
            }
        } catch (SQLException e){
            e.printStackTrace();
        }
    }

测试代码:

import java.sql.DriverManager;
import java.sql.SQLException;
 
public class JDBC_demo {
	static {
		// 加载驱动
		try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
 
	// 连接数据库
	public static Connection getConn() {
		Connection conn = null;
		try {
			conn = DriverManager.getConnection(
					"jdbc:mysql://localhost:3306/supermarket?useUnicode=true&characterEncoding=utf8", "root", "");
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return conn;
	}
 
	public static void main(String[] args) {
		System.out.println("连接+" + JDBC_demo.getConn());
		;
 
	}
 
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值