当前位置:   article > 正文

java利用jdbc连接近远程MySQL数据库详细步骤+数据库封装类 --菜鸟小回_jdbc连接mysql

jdbc连接mysql

java利用jdbc连接近程MySQL数据库详细步骤+数据库封装类


博主自研ChatGPT欢迎体验: 慧言AI
在这里插入图片描述


驱动包

注:未安装mysql或环境未配置好请移步(确保dos状态连接数据库成功后再查看此教程!):

MySQL免安装版配置+dos基础命令创建MySQL+Navicat编辑器破解

一、导入驱动包

  1. 导入connector驱动包:项目下新建“libs”文件夹,复制下载好的connector包到libs文件夹下。
    enter description here

enter description here

  • 此处也可以使用外链形式直接导入,但导入后不可更改包位置:
    enter description here
  1. 建立路径:
    enter description here
  • 建立成功:
    enter description here

二、连接数据库

1. 加载四大件之一 驱动(新版jdk可忽略)

Class.forName("com.mysql.cj.jdbc.Driver");
此处地址获取如图位置:
enter description here+ 右键点击Driver
enter description here

2. 连接到数据库,三大件URL,USER,PASSWORD

URL:jdbc:mysql://ip:端口号/数据库名?时区(serverTimezone=Asia/Shanghai)
User:root
password:root

  • 方式一:本地数据库连接直接使用localhost作为ip

    Connection conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/test3?serverTimezone=Asia/Shanghai", "root", "521521");    
    
    • 1
  • 方式二:利用ip远程操纵数据库,连接其他电脑需要ip,user,password,所连电脑关闭防火墙

    1. 查询本地ip地址
      win+r 输入cmd打开dos界面输入ipconfig即可查询
      enter description here
    2. 找到数据库如图位置mysql->表->user按图中更改,保存
      enter description here
      enter description here
    3. 新建查询输入flush privileges刷新数据库
    4. 进入程序页面将本地连接localhost更换为1中查到的ip:
      Connection conn2=DriverManager.getConnection(“jdbc:mysql://192.168.5.211:3306/test3?serverTimezone=Asia/Shanghai”, “root”, “521521”);
  • 测试连接是否成功:
    System.out.println(conn2.isClosed()==false? "连接成功":"连接失败");

3. 定义执行的SQL语句

String sql2="delete from student where sname='回'";	
//基本增删改查语句
/*			String sql="insert into student values('1','回','男','1997-04-22','950')";		//增
			String sql1="update student set sname='回' where sno='950'";						//改
			String sql2="delete from student where sname='嘿嘿'";								//删
			String sql3="select * from student";											//查
*/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

4. 通过连接对象创建执行的SQL语句的工具(载体)

Statement st=conn2.createStatement();
  • 1

5.操作SQL语句,返回修改记录条数:

int i=st.executeUpdate(sql2);
System.out.println(i);
//查询需要使用ResultSet 接收返回结果集
/*ResultSet rs=st.executeQuery(sql3);
			while(rs.next())
			{
				String sno=rs.getString(1);
				String sname=rs.getString(2);
				String ssex=rs.getString(3);
				Date sbirthday=rs.getDate(4);
				String sclass=rs.getString(5);
				System.out.println(sno+"\t"+sname+"\t"+ssex+"\t"+sbirthday+"\t"+sclass);
			}
*/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

6.断开连接:

   //	rs.close();
   	st.close();
	conn2.close();
	
	
  • 1
  • 2
  • 3
  • 4
  • 5

数据库连接完成!常用sql查询语句移步
常用查询语句


三、利用PreparedStatement操作数据库(防止sql注入!)

package com.zhiyou.jdbcTest;

import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Timestamp;

public class PreperTest {

	public static void main(String[] args) {
		try {
			Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/test3?serverTimezone=Asia/Shanghai", "root", "521521");
			String sql="insert into student values(?,?,?,?,?)"; //?占位
			PreparedStatement ps=conn.prepareStatement(sql);
			ps.setString(1, "20");  //向所占位置添加数据
			ps.setString(2, "哈哈哈");
			ps.setString(3, "男");
			//输入时间格式3种:
				//1.可获取时分秒
			Timestamp ts=new Timestamp(new java.util.Date().getTime());
			ps.setObject(4, ts);
				//2.直接输入,必须用-连接
			//ps.setDate(4,Date.valueOf("2019-04-22"));
				//3.字符串类型输入
			//ps.setString(4, "2019.04.22");
			ps.setString(5, "95320");
			
			int i=ps.executeUpdate(); //返回修改记录条数
			System.out.println(i);
			ps.close();
			conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

四、封装sql连接库

package com.zhiyou.jdbcTest;

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

public class MysqlTool {
	//定义数据库参数
	private static String URL="jdbc:mysql://localhost:3306/test3?serverTimezone=Asia/Shanghai";
	private static String USER="root";
	private static String PASSWORD="521521";
	
	//创建连接对象,载体,结果集对象
	private static Connection conn=null;
	private static PreparedStatement ps=null;
	private static ResultSet rs=null;
	
	//创建连接对象,可以直接在实例化前加载,使用静态方法
	static{
		try {
			conn=DriverManager.getConnection(URL, USER, PASSWORD);
			System.out.println(conn.isClosed()==false? "数据库连接成功...":"数据库连接失败...");
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	/**
	 * 增删改方法update
	 * @param sql 需要执行的sql语句
	 * @param objects	封装了数据的数组,需要和sql语句中的占位符一一对应
	 * @return 返回影响条数,反之为0
	 */
	public  int update(String sql,Object[] objects){
		int a=0;
		try {
			//创建sql载体
			ps=conn.prepareStatement(sql);
			//给占位符赋值
			for(int i=0;i<objects.length;i++){
				ps.setObject(i+1, objects[i]);
			}
			//操作SQL语句
			a=ps.executeUpdate(); 
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return a;
	}
	/**
	 * 
	 * @param sql 需要执行的sql语句
	 * @param objects	封装了数据的数组,需要和sql语句中的占位符一一对应
	 * @return 封装了数据的结果集,失败返回null
	 */
	public ResultSet query(String sql,Object[] objects){
		
		try {
			ps=conn.prepareStatement(sql);
			//给占位符赋值
			for(int i=0;i<objects.length;i++){
				ps.setObject(i+1, objects[i]);
			}
			rs=ps.executeQuery();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return rs;
	}
	public  void close(){	//关闭数据库
		try {
			
			if(rs!=null){
				rs.close();
			}
			if(ps!=null){
				ps.close();
			}
			if(conn!=null)
			{
				conn.close();
				System.out.println("数据库已关闭....");
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 测试
package com.zhiyou.jdbcTest;

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

public class MysqlTest {

	public static void main(String[] args) {
		MysqlTool mt=new MysqlTool();
		String sql="insert into student values(?,?,?,?,?)";
		Object[] objects={"2","嘿嘿","男","1995.02.03","5645"};
		/*String sql1="update student set sname='hhh' where sno=?";
		String sql3 = "delete from student where sno=?";
		Object[] objects1={2};*/
		int i=mt.update(sql, objects);
		System.out.println("成功操作"+i+"条数据...");
		
		String sql4="select * from student LIMIT 1,2";
		Object[] objects2={};
		ResultSet rs=mt.query(sql4, objects2);
		try {
			while(rs.next()){
				Date date = rs.getDate("sbirthday");
				int sid = rs.getInt("sno");
				String sname = rs.getString("sname");
				System.out.println(sid+"\t"+sname+"\t"+date);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		mt.close();
	}
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/728288
推荐阅读
相关标签
  

闽ICP备14008679号