• Java数据库之数据库的连接操作


    这里面我们所连接的数据库是mysql数据库,Oracle数据库暂且先不讨论,并且mysql中的基本语法,这里面也不在一一表述了,但是看这篇文章之前,最好先仔细的连接mysql的基本语法,看起来方便~

    接下来我主要通过几个步骤来整体的实现使用eclipse来连接数据库的操作。

    1.关于mysql的图形化开发工具SQLYog

    在前面的文章中,我有说明如何下载数据库。在下载完数据库之后,我们只能在cmd控制台通过执行mysql -u root -p ***来打开数据库,并且执行操作,但是在控制台要对数据库的一些表进行操作实在是太麻烦(只要一个字符写错就需要全部重写) ,因此在这里我使用SQLyog这个软件来连接我的mysql,使其可以可视化的打开。下面是关于SQLYog的配置:

    (1).安装

    傻瓜式安装即可,文件也不是很大。

    (2).使用方法

    输入用户名、密码,点击连接按钮,进行访问MySQL数据库进行操作

    Query窗口中,输入SQL代码,选中要执行的SQL代码,按F8键运行,或按执行按钮运行。

    上述实现之后,我们就大体实现了mysql的图形化界面的安装啦~

    2.通过ecplise连接数据库的操作

    (1).导入jar包

    我们需要在mysql官网下载java连接mysql的jar包,下载地址:https://blog.csdn.net/zuoshangan1989/article/details/51274852。

    在下载完jar包之后,我们需要将我们的jar包导入到我们的java代码中

     这个文件是java连接mysql的jar包,并且我已经解压完成了。

     

     用鼠标点击右键复制该文件,之后打开ecplise

      

     假设我所建立的工程是java_mysql,这时我们在这个工程里建立一个文件夹lib,并且将之前我们复制的jar文件复制到这个文件夹中,之后,我们在lib点击右键,点Build Path->Configure Build Path-->Libraries-->Add External JARs(添加本地jars包)-->Apply

    这样我们就将这个jar包导入到我们的工程中

     导入完之后自动会生成这个文件。

    (2).java连接数据库的操作步骤

    连接数据库的操作步骤主要分成下面5个步骤:

      1).注册驱动,使用反射技术,固定的格式

      2).获取数据库的连接,DriverManager类中的静态方法,static Connection getConnection(String url,String username,String password),返回值是Connection接口的实现类,在mysql驱动程序中。

        url的格式为:(数据库的的地址)jdbc:mysql://连接主机的IP(本地主机为localhost):端口号(一般是3306)//数据库的名字

      3).获取语句执行平台,通过数据库连接对象,获取SQL语句的执行者对象

        假设第二步我们返回的Connection接口的实现类对象为con,接下来,我们通过con对象调用方法,Statement createStatement()来获取Statement对象,将SQL语句发送到数据库

        返回值是Statement接口垫额实现类对象,在mysql驱动程序中

      4).执行SQL语句

      5).释放资源

    下面的代码,表示的是用java代码来实现连接数据库的操作

    package mysql_demo;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import com.mysql.jdbc.Statement;
    
    public class mysql_demo {
    
    	public static void main(String[] args) throws ClassNotFoundException, SQLException {
    		// TODO Auto-generated method stub
    		//1.注册启动,使用反射技术,固定格式
    				Class.forName("com.mysql.jdbc.Driver");
    				
    				//2.获取数据库连接,DriverManager类中的静态方法
    				//static Connection getConnection(String url,String user,String password)
    				//返回值是Connection接口的实现类,在mysql驱动程序中
    				//url的格式:数据库地址 jdbc:mysql://连接主机IP:端口号//数据库名字
    				String url = "jdbc:mysql://localhost:3306/mybase";
    				String root = "***";
    				String password = "***";
    				Connection con = DriverManager.getConnection(url,root,password);
    //				System.out.println(con);
    				
    				//3.获取语句执行平台,通过数据库连接对象,获取到SQL语句的执行者对象
    				//con对象调用方法,Statement createStatement() 获取Statement对象,将SQL语句发送到数据库
    				//返回值是Statement接口的实现类对象,在mysql驱动程序中
    				Statement stat = (Statement) con.createStatement();
    				
    				//4.执行sql语句
    				//通过执行者对象调用方法执行SQL语句,获取结果 
    				//int executeUpdate(String sql)   执行数据库中的SQL语句,inset,delete,update
    				//返回值是int,操作成功数据表多少行
    //				String sql = "INSERT INTO sort(sname,sprice,sdesc) VALUES('手机11','5999','iphone11')";
    //				int row = stat.executeUpdate(sql);
    //				System.out.println(row);
    				
    				
    				//查询SQL语句
    				String sql = "SELECT * FROM sort";
    				//ReaultSet executeQuery(String sql) 执行SQL语句中的select查询
    				//返回值ResultSet接口的实现类对象,实现类在mysql驱动中
    				ResultSet rs = stat.executeQuery(sql);
    				System.out.println(rs);
    				
    				while(rs.next()){
    					//获取每列的数据,使用的是ResultSet接口的getXXX方法,写String列名
    					System.out.println(rs.getInt("sid")+"   "+rs.getString("sname")+"   "+rs.getDouble("sprice")+"   "+rs.getString("sdesc"));
    				}
    				
    				//6.释放资源
    				rs.close();
    				stat.close();
    				con.close();
    	}
    
    }
    

    (3).为了防止SQL注入攻击。我们引入了prepareStatement

    更新操作:(删除,修改,添加操作同理)

    package mysql_demo;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    
    import com.mysql.jdbc.PreparedStatement;
    
    public class mysql_update {
    
    	/*
    	 * 使用PrepareStatement接口实现数据表的更新操作
    	 * 
    	 * */
    	public static void main(String[] args) throws ClassNotFoundException, SQLException {
    		// TODO Auto-generated method stub
    		
    		//注册驱动
    		Class.forName("com.mysql.jdbc.Driver");
    		//获取连接对象
    		String url = "jdbc:mysql://localhost:3306/mybase";
    		String username = "***";
    		String password = "***";
    		Connection con = DriverManager.getConnection(url,username,password);
    		//拼写修改的SQL语句,参数用?
    		String sql = "Update sort SET sname = ?,sprice=? WHERE sid = ?";
    		//调用连接对象con的方法prepareStatement来获取sql语句的预编译对象
    		PreparedStatement pst = (PreparedStatement) con.prepareStatement(sql);
    		pst.setObject(1, "娃哈哈");
    		pst.setObject(2, 111);
    		pst.setObject(3, 7);
    		System.out.println(pst);
    		
    		//执行SQL语句
    		pst.executeUpdate();
    		
    		//关闭资源
    		pst.close();
    		con.close();
    	}
    
    }
    

    查询操作

    package mysql_demo;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    
    import com.mysql.jdbc.PreparedStatement;
    
    public class mysql_select {
    	public static void main(String[] args) throws Exception{
    		//注册驱动
    		Class.forName("com.mysql.jdbc.Driver");
    		//获取连接对象
    		String url = "jdbc:mysql://localhost:3306/mybase";
    		String username = "***";
    		String password = "***";
    		Connection con = DriverManager.getConnection(url,username,password);
    		
    		String sql = "SELECT * FROM sort";
    		PreparedStatement pst = (PreparedStatement) con.prepareStatement(sql);
    		
    		//调用pst对象的方法,实现查询操作
    		ResultSet rs = pst.executeQuery();
    		while(rs.next()){
    			System.out.println(rs.getString("sid")+"   "+rs.getString("sname")+"   "+rs.getString("sprice")+"   "+rs.getString("sdesc"));
    		}
    		//关闭资源
    		rs.close();
    		pst.close();
    		con.close();
    	}
    }
    

      

    为了我们共同进步,我这里有计算机专业的各种视频,

    如果想要,关注我的公众号:念流声。私聊我,看到后给你连接(只放了一张图片,视频有很多,需要什么可以私聊问我,有的话就给你)。

  • 相关阅读:
    javascript模拟枚举
    javascript实现命名空间效果
    js数组去重
    文件上传插件
    script标签的defer属性
    js数组复制
    更改visual studio2010的主题
    关于json格式在.net前后台传值的详细示例
    where T : class泛型类型约束
    JavaScript模仿鼠标拖动选择功能
  • 原文地址:https://www.cnblogs.com/liuzengzhi/p/11962658.html
Copyright © 2020-2023  润新知