Java连接MySQL数据库及操作

时间:2022-06-06 13:05:47
Java操作MySQL数据库,需要驱动mysql-connector-java 来进行操作,去下载对应的jar包
 

一、导入需要的jar包

我用的是maven对包进行管理,在maven中添加如下内容,直接重新导入Reimport一下包就下载下来了
<dependency>
 <groupId>mysql</groupId>
 <artifactId>mysql-connector-java</artifactId>
 <version>5.1.37</version>
</dependency>

 

想要其他的版本,可以自己去maven的http://www.mvnrepository.com/去找,搜索对应的依赖。
Java连接MySQL数据库及操作
Java连接MySQL数据库及操作
 

二、开始具体编码

1.加载驱动程序
Class.forName("com.mysql.jdbc.Driver" );

 

说明:将这个驱动加载到JVC中
 
2.连接数据库(con是自定义的)
Connection con = DriverManager.getConnection(url, user, password)
 
3.建立Statement对象,用来执行sql语句
Statement stmt = con.createStatement();
 
4.执行sql语句
可以进行查询、update等操作,我这里只用到了查询,更新可以用 executeUpdate
 
查询语句:
res = stmt.executeQuery(sql)
说明:stmt为自己创建的Statement对象,sql为要执行的sql具体语句,是String类型的
 
5.提取查询结果中的某一项
while(res.next()) {
long info_id = res.getLong("info_id");
}

 

说明:
1.因为查询结果可能不止一条,所以要进行遍历,只要有这一条就可以获得出来
2.上面是查询出了字段名为“info_id”的项存到info_id的变量中,是long的变量类型(这里一定要看表设计中的字段类型,有的是可以用int,但是有的是long)
3.如果是char等类型的可以用res.getString("XXX")获得对应的值;再有其他类型可以具体自己去查询对应方法
 
 我写的一个java操作MySQL的具体代码如下:
package entity;
import java.sql.*;
import java.sql.Connection;
import java.sql.Statement;


/**
 * Created by lenovo on 2015/12/7.
 */
public class JDBC{
    Statement stmt =null;
    ResultSet rs =null;
    String result = null;
    public JDBC(){
        String driver = "com.mysql.jdbc.Driver";
        String url = "jdbc:mysql://10.5.17.66:58885/?useUnicode=true&characterEncoding=utf-8";
        String user = "root";
        String password = "123456";
        try {
            Class.forName(driver);
// System.out.println("找到驱动了");
            try {
                Connection con = DriverManager.getConnection(url, user, password);
// System.out.println("数据库连接成功!");
                this.stmt = con.createStatement();
            } catch (SQLException e) {
                System.out.println("数据库连接失败!");
                e.printStackTrace();
            }
        } catch (ClassNotFoundException e) {
            System.out.println("找不到驱动程序类 ,加载驱动失败!");
            e.printStackTrace();
        }
    }
    //该方法返回的是全部的sql结果,在调用时需要自己去遍历然后取得相应结果
    public ResultSet getresult(String sql) {
        try {
            this.rs = this.stmt.executeQuery(sql);
            return this.rs;
        }catch (SQLException e){
            System.out.println("SQL中找不到要查找的字段!");
            e.printStackTrace();
            return this.rs;
        }
    }
    //该方法是直接获得了要找的字段名对应的结果,只取一条,所以会不断的覆盖,取到最后一条,试用与sql结果只有一个的情况,如果是结果是好多行数据,需要用ExcuteSql的方法
    public String getresult(String sql,String key){
        try {
            this.rs = this.stmt.executeQuery(sql);
        }catch (SQLException e){
            System.out.println("SQL中找不到要查找的字段!");
            e.printStackTrace();
        }
        try{
            while(this.rs.next()) {
                this.result = this.rs.getString(key);
            }
        }catch (Exception e){
            System.out.println("SQL获取结果异常!");
            e.printStackTrace();
        }
        return this.result;
    }
    public static void main(String args[]) {
        JDBC test = new JDBC();
        String sql = "SELECT * from dbwww58com_info.info limit 1";
//会有多列结果时,只传递sql
        ResultSet res = test.getresult(sql);
        System.out.print(res);
        try{
            while(res.next()) {
                long info_id = res.getLong("info_id");
                System.out.println("\ninfo_id:" + info_id);
            }
        }catch (Exception e){
            System.out.println("SQL获取结果异常!");
            e.printStackTrace();
        }
//只有一个结果时,传递sql和key两个参数
// String result= test.getresult(sql, "info_id");
// System.out.println("结果是"+result);
    }
}

 

执行结果如下:
Java连接MySQL数据库及操作
Java连接MySQL数据库及操作
 
说明:这里写方法getresult()时用到了重载,因为java不支持对参数赋值默认值,所以只能用重载实现这样的功能(同一个执行方法,我一个指向获得查询结果,一个想获得查询结果中具体的某一个字段值),关于java重载的使用,我过几天会再写一篇随笔来补充一下~