(一)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());
		;
 
	}
 
}


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我了解到您想了解如何通过JDBC连接MySQL数据库并使用Spark DataFrame进行数据操作。 首先,您需要在Spark应用程序中引入相应的JDBC驱动程序。如果您使用MySQL数据库,则可以通过以下方式引入MySQL驱动程序: ```scala // Scala val spark = SparkSession.builder() .appName("JDBC example") .config("spark.master", "local") .getOrCreate() // Add MySQL JDBC driver spark.sparkContext.addJar("/path/to/mysql-connector-java.jar") ``` ```java // Java SparkSession spark = SparkSession.builder() .appName("JDBC example") .config("spark.master", "local") .getOrCreate(); // Add MySQL JDBC driver spark.sparkContext().addJar("/path/to/mysql-connector-java.jar"); ``` 接下来,您需要指定MySQL数据库连接参数,例如URL、用户名和密码等。以下是一个示例: ```scala // Scala val jdbcUrl = "jdbc:mysql://localhost:3306/mydatabase" val connectionProperties = new Properties() connectionProperties.put("user", "myuser") connectionProperties.put("password", "mypassword") ``` ```java // Java String jdbcUrl = "jdbc:mysql://localhost:3306/mydatabase"; Properties connectionProperties = new Properties(); connectionProperties.put("user", "myuser"); connectionProperties.put("password", "mypassword"); ``` 现在,您可以使用Spark DataFrame API来读取MySQL数据库中的数据。以下是一个示例: ```scala // Scala val df = spark.read.jdbc(jdbcUrl, "mytable", connectionProperties) df.show() // Filter data val filteredDf = df.filter($"age" > 30) filteredDf.show() // Write data filteredDf.write.jdbc(jdbcUrl, "filtered_table", connectionProperties) ``` ```java // Java Dataset<Row> df = spark.read().jdbc(jdbcUrl, "mytable", connectionProperties); df.show(); // Filter data Dataset<Row> filteredDf = df.filter(col("age").gt(30)); filteredDf.show(); // Write data filteredDf.write().jdbc(jdbcUrl, "filtered_table", connectionProperties); ``` 以上示例演示了如何使用Spark DataFrame API读取、过滤和写入MySQL数据库中的数据。您可以根据自己的需求进行相应的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值