zoukankan      html  css  js  c++  java
  • 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();
    	}
    }
    

      

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

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

  • 相关阅读:
    OSX安装nginx和rtmp模块(rtmp直播服务器搭建)
    用runtime来重写Coder和deCode方法 归档解档的时候使用
    Homebrew安装卸载
    Cannot create a new pixel buffer adaptor with an asset writer input that has already started writing'
    OSX下面用ffmpeg抓取桌面以及摄像头推流进行直播
    让nginx支持HLS
    iOS 字典转json字符串
    iOS 七牛多张图片上传
    iOS9UICollectionView自定义布局modifying attributes returned by UICollectionViewFlowLayout without copying them
    Xcode6 iOS7模拟器和Xcode7 iOS8模拟器离线下载
  • 原文地址:https://www.cnblogs.com/liuzengzhi/p/11962658.html
Copyright © 2011-2022 走看看