Jdbc的简单增删改查(MYSQL)

Jdbc的简单增删改查(MYSQL)
今天来写一篇简单的jdbc的增删改查的操作,如果还没学jdbc的同学可以看一看。个人认为jdbc的操作比文件简单多了,学会jdbc之后就不用受文件的苦了(反正我没用过文件,哈哈)。而且如果做出的项目的数据能够保存起来,这个项目的逼格立马高了起来啊。
1、工具准备
首先你需要导一个jar文件,如果你的mysql是5.7版本的,可以用我这个
链接:https://pan.baidu.com/s/1wQTkLqd_NniQ9M1hvnIuDw 密码:20t6
如果不是的话在这个网站下载http://dev.mysql.com/downloads/connector/j/
这里给一个怎么在Eclilpse中导入jar包的教程(毕竟这不是重点,看看别人的就行了)
https://jingyan.baidu.com/article/ca41422fc76c4a1eae99ed9f.html

2、创建一个mysql表
CREATE TABLE tb_person (
name varchar(10) DEFAULT NULL,
sex varchar(5) DEFAULT NULL,
age int(11) DEFAULT NULL,
id int(11) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
有这个表,就可以把数据放入数据库了

3、准备工作做完了,就开始进行数据的插入吧

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

public class FirstTest {
	public static final String URL = "jdbc:mysql://localhost:3306/databaseweb";//databaseweb是我创建的数据库名称,前面的东西照着抄就行了
		public static final String USER = "root";//抄下来就行
		public static final String PASS = "gt1010992686";//数据库密码,每个人设置的都不同,要改
	    private static Connection conn = null;//抄下来就行
	
   public static void main(String[] args) throws SQLException  {
	  
			try {
				Class.forName("com.mysql.jdbc.Driver");//抄下来就行
				try {
					conn = DriverManager.getConnection(URL,USER,PASS);//抄下来就行
				} catch (SQLException e) {
					e.printStackTrace();
				}
			} catch (ClassNotFoundException e) {
				e.printStackTrace();
			}
		//下面的都是测试数据,怎么好玩你怎么设置
	   int id = 5;
	   int age = 19;
	   String name = "yangan";
	   String sex = "man";
	   
	   
	   String sql = "insert into tb_person values(?,?,?,?)";//关键sql语句,tb_person是这个表 ?代表要插入的数据,就把这个理解成%d就行了
	   
	   PreparedStatement ptmt = conn.prepareStatement(sql);	//抄下来就行
	   ptmt.setInt(4, id);       //把数据插入到数据库。数字代表第几个?,需要对应
	   ptmt.setString(1, name);
	   ptmt.setString(2, sex);
	   ptmt.setInt(3, age);
	   
	   ptmt.execute();//关闭,抄下来就行
}
}

运行代码(id 1~4是我之前写好了的,主要关注id 5)

4、那些看不懂的玩意
讲解一下那些“抄下来就行”的:URL为数据库地址(含端口号),里面的数据库名字需要自己进行修改,你创建的数据库叫啥名字就写啥。USER就写上root就行了,PASS就写上你的数据库密码。Connection是一个连接对象,Class.forName(“com.mysql.jdbc.Driver”)是注册驱动。
conn = DriverManager.getConnection(URL,USER,PASS)就算是建立了和数据库的连接
用一个String保存sql语句,用PrepareStatement类执行这个sql语句。
再用里面的set方法,把数据一一放进数据库,就行了。
5、删除操作

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

public class Deletesql {
	
	public static final String URL = "jdbc:mysql://localhost:3306/databaseweb";//databaseweb是数据库,前面的东西照着抄就行了
	public static final String USER = "root";//抄下来就行
	public static final String PASS = "gt1010992686";//数据库密码
    private static Connection conn = null;//抄下来就行
	public static void main(String[] args) throws ClassNotFoundException, SQLException {
		
		try {
			Class.forName("com.mysql.jdbc.Driver");//抄下来就行
			try {
				conn = DriverManager.getConnection(URL,USER,PASS);//抄下来就行
			} catch (SQLException e) {
				e.printStackTrace();
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}

		
		String sql = "delete from tb_person where name = ?";//删除的sql语句
		PreparedStatement ptmt = conn.prepareStatement(sql);
		String name1 = "yangan";
		ptmt.setString(1, name1);
		
		ptmt.execute();
	}
}

有木有发现,刚才插入的那个已经被成功删除了。
细心的小伙伴应该能发现,这两段代码是不是有一大堆相同的部分?而且格式都很固定,如果每次都要写这个一大堆不是很累么,程序员要学会偷懒,那么怎么偷懒呢?静态函数可以帮助我们。把相同的部分封装成一个类,再类里写一个静态函数,直接调用这个类里面的静态函数,就可以得到Connection 对象,这样就可以节省一大堆时间啦

封装好的类代码:

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

public class DBUtil {
    
	public static final String URL = "jdbc:mysql://localhost:3306/databaseweb";
	public static final String USER = "root";
	public static final String PASS = "gt1010992686";
	
	private static Connection conn = null;
	static {
		
		try {
			Class.forName("com.mysql.jdbc.Driver");
			try {
				conn = DriverManager.getConnection(URL,USER,PASS);
			} catch (SQLException e) {
				e.printStackTrace();
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
	public static Connection getConnection() {
		
		return conn;//关键,其他的都是虚的,上面一大堆,就是为了这个东西
		
	}
	
}

6、用封装好的方法来演示修改数据操作

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

public class Altersql {
     
	
	public static void main(String[] args) throws ClassNotFoundException, SQLException {
		
		Connection conn = DBUtil.getConnection();
	    
	    String sql = "update tb_person set name =? where id = 1";
	    
	    PreparedStatement ptmt = conn.prepareStatement(sql);
	    
	    ptmt.setString(1, "yangan");
	    
	    ptmt.execute();
	}

}

泪流满面有木有,这代码是不是十分简单,只要有了这个类,以后只需要写sql语句就行了

7、查找

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.mysql.jdbc.Connection;


public class Test {
      
	
    public static void main(String[] args) throws SQLException,Exception{
       
    	
    	Connection conn = (Connection) DBUtil.getConnection();
    	Statement stat = conn.createStatement();
        String sql = "SELECT * FROM tb_person";
        ResultSet rs = stat.executeQuery(sql);
        // 输出查询结果
        while(rs.next()){
            System.out.print(rs.getInt("id")+",");
            System.out.print(rs.getString("name")+",");
            System.out.print(rs.getString("sex")+",");
            System.out.print(rs.getInt("age"));
            System.out.print("\n");
        }
        // 关闭
       try {
           if (rs != null) {
               rs.close();
           }
       } catch (SQLException e) {
           e.printStackTrace();
       } finally {
           try {
               if (stat != null) {
                   stat.close();
               }
           } catch (SQLException e) {
               e.printStackTrace();
           } finally {
               try {
                   if (conn != null) {
                       conn.close();
                   }
               } catch (SQLException e) {
                   e.printStackTrace();
               }
           }
       }
     }
}

为啥这里用的和上面的执行数据库语句不同呢?
Statement是一个执行无参数的sql语句的类,既然查找这条语句没有参数,那么就可以使用这个类。
ResultSet是结果集,用来返回在数据库中存放的结果,然后用get方法,把结果取出来。
.next方法可以向后移动。相当于遍历结果集。

8、总结
这就是简单的数据库jdbc操作了,从这里可以看出,其实连接数据库的方法是很固定的,基本上代码可以说都差不多。灵活的地方在与sql语句,知道更多的sql语句可以用更多的方法对数据库进行操作,这才是关键。最后附上java核心技术2的pdf,有兴趣的小伙伴可以下载下来看一下里面的jdbc是怎么讲的,希望对大家能有一点点的帮助。O(∩_∩)O哈哈
链接:https://pan.baidu.com/s/1MpNnDZ64qXhwou6sLeIYjw 密码:9b1b

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章