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/去找,搜索对应的依赖。
二、开始具体编码
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(" info_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); } }
执行结果如下:
说明:这里写方法getresult()时用到了重载,因为java不支持对参数赋值默认值,所以只能用重载实现这样的功能(同一个执行方法,我一个指向获得查询结果,一个想获得查询结果中具体的某一个字段值),关于java重载的使用,我过几天会再写一篇随笔来补充一下~