Java连接到MySQL数据库的代码及相关操作。在将Java程序连接到MySQL数据库的过程中,应先将程序驱动包导入“External Libraries”,其步骤是:Project Structure(Ctrl+Alt+Shift+S) → Modules → Dependencies → Add 驱动包。
JDBC代码模板:
Class.forName(JDBC驱动类);Connection con = DriverManager.get(Connection(JDBC URL, 数据库用户名, 密码));Statement stmt = con.createStatement();ResultSet rs = stmt.executeQuery("SELECT a,b FROM Table");Whlie(rs.next()){ Int x = rs.getInt("a"); String s = rs.getString("b");}rs.close();stmt.close();con.close();
其中,a、b的数据类型分别为整形和字符串型;实际应用中,随着a、b的数据类型的不同,while语句中的语句类型也随之改变。当然,想要运行以下代码,需要在MySQL中建立相同名称的数据库(包含相同的用户名和密码)、表以及表的内容,例如本文中数据库名、用户名和密码皆为test,表名为student-info,表的内容为student-name和student-id。
import java.sql.*;public class linkedMysql { public static void main(String[] args) { //声明Connection对象 Connection con; //驱动程序名 String driver = "com.mysql.jdbc.Driver"; //URL指向要访问的数据库名test String url = "jdbc:mysql://192.168.0.91:3306/test"; //MySQL配置时的用户名 String user = "test"; //MySQL配置时的密码 String password = "test"; //遍历查询结果集 try { //加载驱动程序 Class.forName(driver); //通过getConnection()方法,连接MySQL数据库 con = DriverManager.getConnection(url, user, password); if (!con.isClosed()) System.out.println("Succeeded connecting to the Database!"); //创建statement类对象,用来执行SQL语句 Statement statement = con.createStatement(); //要执行的SQL语句 String sql = "select * from student_info"; //ResultSet类,用来存放获取的结果集 ResultSet rs = statement.executeQuery(sql); System.out.println("-----------------"); System.out.println("执行结果如下所示:"); System.out.println("-----------------"); System.out.println(" 学号" + "\t" + " 姓名"); System.out.println("-----------------"); String name = null; String id = null; while (rs.next()) { //获取stuname这列数据 name = rs.getString("student_name"); //获取stuid这列数据 id = rs.getString("student_id"); //首先使用ISO-8859-1字符集将name解码为字节序列并将结果存储新的字节数组中。 //然后使用GB2312字符集解码指定的字节数组。 name = new String(name.getBytes("ISO-8859-1"), "gb2312"); //输出结果 System.out.println(id + "\t" + name); } rs.close(); con.close(); } catch (ClassNotFoundException e) { //数据库驱动类异常处理 System.out.println("Sorry,can`t find the Driver!"); e.printStackTrace(); } catch (SQLException e) { //数据库连接失败异常处理 e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { System.out.println("数据库数据成功获取!"); } }}
如果要进一步完成对数据库的添加、修改和删除操作,则只需要在上面while代码段后面添加以下代码段:
PreparedStatement psql;ResultSet res;psql = con.prepareStatement("insert into student_info values(?,?)"); //预处理添加数据,其中有两个参数--“?”psql.setInt(1, 3); //设置参数1,创建id为5的数据psql.setString(2, "xiaoming"); //设置参数2,name 为小明psql.executeUpdate(); //执行更新psql = con.prepareStatement("update student_info set student_name = ? where student_id = ?"); //预处理更新(修改)数据psql.setString(1,"sanshi"); //设置参数1,将name改为王五psql.setInt(2,5); //设置参数2,将id为2的数据做修改psql.executeUpdate();psql = con.prepareStatement("delete from student_info where student_id = ?"); //预处理删除数据psql.setInt(1,8);psql.executeUpdate();psql = con.prepareStatement("select * from student_info"); //查询修改数据后student表中的数据res = psql.executeQuery(); //执行预处理sql语句System.out.println("执行增加、修改、删除后的数据");while(res.next()){ name = res.getString("student_name"); id = res.getString("student_id"); name = new String(name.getBytes("ISO-8859-1"),"gb2312"); System.out.println(id + "\t" + name);}res.close();psql.close();
该代码段使用了预处理语句:con.prepareStatement(String sql);
这样生成数据库底层的内部命令,并将该命令封装在prepareStatement对象中,可以减轻数据库负担,提高访问数据库的速度。Java连接到MySQL数据库及相关操作的完整代码如下:
import java.sql.*;public class linkedMysql { public static void main(String[] args) { //声明Connection对象 Connection con; //驱动程序名 String driver = "com.mysql.jdbc.Driver"; //URL指向要访问的数据库名test String url = "jdbc:mysql://192.168.0.91:3306/test"; //MySQL配置时的用户名 String user = "test"; //MySQL配置时的密码 String password = "test"; //遍历查询结果集 try { //加载驱动程序 Class.forName(driver); //通过getConnection()方法,连接MySQL数据库 con = DriverManager.getConnection(url, user, password); if (!con.isClosed()) System.out.println("Succeeded connecting to the Database!"); //创建statement类对象,用来执行SQL语句 Statement statement = con.createStatement(); //要执行的SQL语句 String sql = "select * from student_info"; //ResultSet类,用来存放获取的结果集 ResultSet rs = statement.executeQuery(sql); System.out.println("-----------------"); System.out.println("执行结果如下所示:"); System.out.println("-----------------"); System.out.println(" 学号" + "\t" + " 姓名"); System.out.println("-----------------"); String name = null; String id = null; while (rs.next()) { //获取stuname这列数据 name = rs.getString("student_name"); //获取stuid这列数据 id = rs.getString("student_id"); //首先使用ISO-8859-1字符集将name解码为字节序列并将结果存储新的字节数组中。 //然后使用GB2312字符集解码指定的字节数组。 name = new String(name.getBytes("ISO-8859-1"), "gb2312"); //输出结果 System.out.println(id + "\t" + name); } PreparedStatement psql; ResultSet res; //预处理添加数据,其中有两个参数--“?” psql = con.prepareStatement("insert into student_info values(?,?)"); psql.setInt(1, 3); //设置参数1,创建id为5的数据 psql.setString(2, "xiaoming"); //设置参数2,name 为小明 psql.executeUpdate(); //执行更新 //预处理更新(修改)数据 psql = con.prepareStatement("update student_info set student_name = ? where student_id = ?"); psql.setString(1,"sanshi"); //设置参数1,将name改为王五 psql.setInt(2,5); //设置参数2,将id为2的数据做修改 psql.executeUpdate(); //预处理删除数据 psql = con.prepareStatement("delete from student_info where student_id = ?"); psql.setInt(1,8); psql.executeUpdate(); //查询修改数据后student表中的数据 psql = con.prepareStatement("select * from student_info"); res = psql.executeQuery(); //执行预处理sql语句 System.out.println("执行增加、修改、删除后的数据"); while(res.next()){ name = res.getString("student_name"); id = res.getString("student_id"); name = new String(name.getBytes("ISO-8859-1"),"gb2312"); System.out.println(id + "\t" + name); } res.close(); psql.close(); rs.close(); con.close(); } catch (ClassNotFoundException e) { //数据库驱动类异常处理 System.out.println("Sorry,can`t find the Driver!"); e.printStackTrace(); } catch (SQLException e) { //数据库连接失败异常处理 e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { System.out.println("数据库数据成功获取!"); } }}