MySQL初步学习3:Eclipse中使用

来源:互联网 发布:虚幻4和unity3d 编辑:程序博客网 时间:2024/06/06 16:25

MySQL驱动程序添加到eclipse中后,就可以尝试在eclipse中使用数据库了。

1、加载驱动程序

驱动程序地址:com.mysql.jdbc.Driver
用Class类加载驱动程序,如下

package test;public class TestClass {    public static String Driver="com.mysql.jdbc.Driver"; //数据库驱动软件中地址    public static void main(String[] args) {        // TODO Auto-generated method stub        try {            Class.forName(Driver);     //加载驱动程序            System.out.println("success");        }catch(Exception w) {            w.printStackTrace();            System.out.println("****");        }    }}

输出“success”表示加载成功。

2、连接和关闭数据库

eclipse中提供了DriverManager类连接数据库,通过getConnection()方法取得连接对象,返回一个Connection对象
getConnection()方法中的参数为MySQL的连接地址、用户名和密码。
MySQL数据库的连接地址格式为

jdbc:mysql://IP地址:端口号/数据库名称

如果是本机中的数据库,IP地址为localhost,端口号为3306。
我的数据库名:root,密码:123456。建立了一个数据库bb,并在其中建表b2,添加数据。查询效果:
数据库查询

之后的操作都基于这个数据库。所以我的连接地址为:jdbc:mysql://localhost:3306/bb

在eclipse中连接和关闭数据库

package test;import java.sql.Connection;import java.sql.DriverManager;public class StartClass {    public static final String Driver="com.mysql.jdbc.Driver";    public static final String URL="jdbc:mysql://localhost:3306/bb";     //格式   jdbc:mysql://IP地址:端口号/数据库名称    public static void main(String args[]) {        Connection con=null;        try {            Class.forName(Driver);        }catch(Exception e) {            e.printStackTrace();        }        try {            con=DriverManager.getConnection(URL,"root","123456");  //数据库地址,数据库用户名,密码            System.out.println("***");        }catch(Exception e) {            e.printStackTrace();        }        System.out.println(con);        try {            con.close();  //关闭数据库        }catch(Exception e) {            e.printStackTrace();        }    }}

输出不为空,表示连接成功:

***com.mysql.jdbc.JDBC4Connection@5910e440

建议用完数据库后删除,避免占用较大资源。

3、数据库更新数据

数据的更新需要用Statement接口完成,通过Connection接口中提供的createStatement实例化

3.1、数据插入

首先是实例化一个Statement,然后是数据库建表中的数据插入命令,将该命令添加到Statement类的executeUpdate()方法中。
看一个例子:

package test;import java.sql.*;public class InsertClass {    public static void main(String[] args) {        //插入数据        Connection con=null;             Statement state=null;   //使用statement接口        String str=" insert into b2 (id,age,name,sex) values (5,19,'Jone','nan') ";  //插入语句         //这里的插入数据也可以用变量带入        try {            Class.forName("com.mysql.jdbc.Driver");    //驱动程序            con=DriverManager.getConnection("jdbc:mysql://localhost:3306/bb","root","123456"); //连接数据库            state=con.createStatement();  //实例化statement对象            state.executeUpdate(str);     //插入数据            state.close();            con.close();            System.out.println("success");        }catch(Exception e) {            e.printStackTrace();            System.out.println("*****");        }    }}

运行成功后,在命令行中查询:
数据插入

3.2、数据修改

和插入语句步骤相同,只要把SQL语句改为update即可。

public class UpdateClass {
//更新数据
public static void main(String[] args) {
// TODO Auto-generated method stub
Connection con=null;
Statement state=null; //使用statement接口

    String name="Jane";    int age=19;    int id=5;    //String str="update b2 set name='Jane',age=17 where id=5";    String str=  " update b2 set name=' " +  name  + " ',age= "  + age + " where id=" +id ;     //两条更新语句效果相同。    try {        Class.forName("com.mysql.jdbc.Driver");    //驱动程序        con=DriverManager.getConnection("jdbc:mysql://localhost:3306/bb","root","123456"); //连接数据库        state=con.createStatement();  //实例化statement对象        state.executeUpdate(str);     //插入数据        state.close();        con.close();        System.out.println("success");    }catch(Exception e) {        e.printStackTrace();        System.out.println("*****");    }}

}
运行成功后,结果:
数据修改

3.3、数据删除

同理,修改数据库指令。

package test;import java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement;public class DeleteClass {//删除数据    public static void main(String[] args) {        Connection con=null;             Statement state=null;   //使用statement接口        String str=" delete from b2 where id=5 ";  //插入语句         //这里的插入数据也可以用变量带入        try {            Class.forName("com.mysql.jdbc.Driver");    //驱动程序            con=DriverManager.getConnection("jdbc:mysql://localhost:3306/bb","root","123456"); //连接数据库            state=con.createStatement();  //实例化statement对象            state.executeUpdate(str);     //删除数据            state.close();            con.close();            System.out.println("success");        }catch(Exception e) {            e.printStackTrace();            System.out.println("*****");        }    }}

运行成功后,再查询结果如下:
数据删除

4、查询数据

查询数据库数据,需要用到select语句,同时,查询到的记录也应使用ResultSet进行接收。

package test;import java.sql.*;public class SelectClass {//查询数据    public static void main(String[] args) {        Connection con=null;        Statement state=null;        ResultSet rs=null;        String str="select * from b2";        try {            Class.forName("com.mysql.jdbc.Driver");            con=DriverManager.getConnection("jdbc:mysql://localhost:3306/bb","root","123456");            state=con.createStatement();            rs=state.executeQuery(str); //查询结果用ResultSet接收            while(rs.next()) {   //将指针指向下一行                int id=rs.getInt("id");  //读取内容                int age=rs.getInt("age");                String name=rs.getNString("name");                String sex=rs.getString("sex");                System.out.println("id:"+'\t'+id+'\t' + "age:"+'\t'+age+'\t' + "name:"+'\t'+name+'\t' + "sex:"+'\t' +sex);                int id1=rs.getInt(1);               //按表中列的编号读取,与上一种方法效果相同,建议用这种                int age1=rs.getInt(2);                String name1=rs.getNString(3);                String sex1=rs.getString(4);                System.out.println("id:"+'\t'+id1+'\t' + "age:"+'\t'+age1+'\t' + "name:"+'\t'+name1+'\t' + "sex:"+'\t' +sex1);            }            rs.close();            state.close();            con.close();        }catch(Exception e) {            e.printStackTrace();            System.out.println("*****");        }    }}

运行结果:

id: 1   age:    16  name:   sd  sex:    gaid: 1   age:    16  name:   sd  sex:    gaid: 2   age:    18  name:   nalk    sex:    sjdid: 2   age:    18  name:   nalk    sex:    sjdid: 3   age:    0   name:   sd  sex:    nullid: 3   age:    0   name:   sd  sex:    nullid: 4   age:    0   name:   wdv sex:    nullid: 4   age:    0   name:   wdv sex:    null

5、预处理操作

PreparedStatement接口
SQL语句中的内容暂时不设置,用“?”来代指,等用到时再进行设置。
如: select name,age from user where id=? 。
预处理的设置是通过setString()setInt()等方法实现。其中的参数,第一个表示要设置的索引编号,也即表中第几列的字段,第二个表示设置的内容。

package test;import java.sql.*;public class PrepareClass {    //预处理,用PreparedStatement接口实现    public static void main(String args[]) {        Connection con=null;        PreparedStatement ps=null;        Statement state=null;        ResultSet rs=null;        String str="insert into b2 values (?,?,?,?)";  //用?定义预处理的项        String str1="select * from b2";        String str2="delete from b2 where id=?";        try {            Class.forName("com.mysql.jdbc.Driver");            con=DriverManager.getConnection("jdbc:mysql://localhost:3306/bb","root","123456");            ps=con.prepareStatement(str);            ps.setInt(1, 5);      //实例化预处理,第一个变量指定索引的编号,第二项为设置的内容。            ps.setInt(2, 15);            ps.setString(3, "JAM");            ps.setString(4, "nv");            ps.executeUpdate();            state=con.createStatement();//查询结果            rs=state.executeQuery(str1);             while(rs.next()) {   //将指针指向下一行                int id1=rs.getInt(1);   //按列的编号读取                int age1=rs.getInt(2);                String name1=rs.getNString(3);                String sex1=rs.getString(4);                System.out.println("id:"+'\t'+id1+'\t' + "age:"+'\t'+age1+'\t' + "name:"+'\t'+name1+'\t' + "sex:"+'\t' +sex1);            }            ps=con.prepareStatement(str2);            ps.setInt(1, 5);            ps.executeUpdate();            System.out.println("---------------------------------------------------------------");            rs=state.executeQuery(str1);             while(rs.next()) {   //将指针指向下一行                int id1=rs.getInt(1);   //按列的编号读取,与上一种方法效果相同,建议用这种                int age1=rs.getInt(2);                String name1=rs.getNString(3);                String sex1=rs.getString(4);                System.out.println("id:"+'\t'+id1+'\t' + "age:"+'\t'+age1+'\t' + "name:"+'\t'+name1+'\t' + "sex:"+'\t' +sex1);            }            rs.close();            ps.close();            state.close();            con.close();        }catch(Exception e) {            e.printStackTrace();            System.out.println("*****");        }    }}

运行结果如下:

id: 1   age:    16  name:   sd  sex:    gaid: 2   age:    18  name:   nalk    sex:    sjdid: 3   age:    0   name:   sd  sex:    nullid: 4   age:    0   name:   wdv sex:    nullid: 5   age:    15  name:   JAM sex:    nv---------------------------------------------------------------id: 1   age:    16  name:   sd  sex:    gaid: 2   age:    18  name:   nalk    sex:    sjdid: 3   age:    0   name:   sd  sex:    nullid: 4   age:    0   name:   wdv sex:    null
原创粉丝点击