精华内容
下载资源
问答
  • JAVA数据库基本操作

    2007-06-11 20:50:00
    JAVA数据库基本操作
    JAVA数据库基本操作1648181.aspx
    展开全文
  • Java 数据库基本操作

    万次阅读 多人点赞 2018-07-15 15:43:37
    连接数据库要访问数据库,首先要加载数据库的驱动程序(只需要在第一次访问数据库时加载一次),然后每次访问数据时创建一个Connection对象,之后执行操作数据库的SQL语句,最后在完成数据库操作后销毁前面创建的...

    连接数据库

    要访问数据库,首先要加载数据库的驱动程序(只需要在第一次访问数据库时加载一次),然后每次访问数据时创建一个Connection对象,之后执行操作数据库的SQL语句,最后在完成数据库操作后销毁前面创建的Connection对象,释放与数据库的连接。


    import java.sql.*; //导入java.sql包
    
    public class Conn { // 创建类Conn
    	Connection con; // 声明Connection对象
    
    	public Connection getConnection() { // 建立返回值为Connection的方法
    		try { // 加载数据库驱动类
    			Class.forName("com.mysql.jdbc.Driver");
    			System.out.println("数据库驱动加载成功");
    		} catch (ClassNotFoundException e) {
    			e.printStackTrace();
    		}
    		try { // 通过访问数据库的URL获取数据库连接对象
    			con = DriverManager.getConnection("jdbc:mysql:"
    					+ "//127.0.0.1:3306/test", "root", "123456");
    			System.out.println("数据库连接成功");
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		return con; // 按方法要求返回一个Connection对象
    	}
    
    	public static void main(String[] args) { // 主方法
    		Conn c = new Conn(); // 创建本类对象
    		c.getConnection(); // 调用连接数据库的方法
    	}
    }
    

    向数据库发送SQL语句

    getConnection()方法只是获取与数据库的连接,要执行SQL语句首先要获得Statement类对象,通过创建的连接数据库对象的createStatement()方法可获得Statement对象。

    处理查询结果集

    有了Statement对象以后,可调用相应的方法实现对数据库的查询和修改,并将查询的结果集存放在ResultSet类的对象中。

    顺序查询

    ResultSet类的next()方法的返回值是boolean类型的数据,当游标移动到最后一行之后会返回false。

    import java.sql.*;
    
    public class Gradation { // 创建类
    	static Connection con; // 声明Connection对象
    	static Statement sql; // 声明Statement对象
    	static ResultSet res; // 声明ResultSet对象
    
    	public Connection getConnection() { // 连接数据库方法
    
    		try {
    			Class.forName("com.mysql.jdbc.Driver");
    			con = DriverManager.getConnection("jdbc:mysql:"
    					+ "//127.0.0.1:3306/test", "root", "123456");
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return con; // 返回Connection对象
    	}
    
    	public static void main(String[] args) { // 主方法
    		Gradation c = new Gradation(); // 创建本类对象
    		con = c.getConnection(); // 与数据库建立连接
    		try {
    			sql = con.createStatement(); // 实例化Statement对象
    			// 执行SQL语句,返回结果集
    			res = sql.executeQuery("select * from tb_stu");
    			while (res.next()) { // 如果当前语句不是最后一条则进入循环
    				String id = res.getString("id"); // 获取列名是"id"的字段值
    				// 获取列名是"name"的字段值
    				String name = res.getString("name");
    				// 获取列名是"sex"的字段值
    				String sex = res.getString("sex");
    				// 获取列名是"birthday"的字段值
    				String birthday = res.getString("birthday");
    				System.out.print("编号:" + id); // 将列值输出
    				System.out.print(" 姓名:" + name);
    				System.out.print(" 性别:" + sex);
    				System.out.println(" 生日:" + birthday);
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    }

    模糊查询

    SQL语句中提供了LIKE操作符用于模糊查询,可使用“%”来代替0个或多个字符,使用下划线“_”来代替一个字符。

    import java.sql.*;
    
    public class Train { // 创建类Train
    	static Connection con; // 声明Connection对象
    	static Statement sql; // 声明Statement对象
    	static ResultSet res; // 声明ResultSet对象
    	
    	public Connection getConnection() { // 与数据库连接方法
    		try {
    			Class.forName("com.mysql.jdbc.Driver");
    			con = DriverManager.getConnection("jdbc:mysql:"
    					+ "//127.0.0.1:3306/test", "root", "123456");
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return con; // 返回Connection对象
    	}
    	
    	public static void main(String[] args) { // 主方法
    		Train c = new Train(); // 创建本类对象
    		con = c.getConnection(); // 获取与数据库的连接
    		try { // try语句捕捉异常
    			sql = con.createStatement(); // 实例化Statement对象
    			res = sql.executeQuery("select * from tb_stu where name like '张%'");// 执行SQL语句
    			while (res.next()) { // 如果当前记录不是结果集中的最后一条,进入循环体
    				String id = res.getString(1); // 获取id字段值
    				String name = res.getString("name"); // 获取name字段值
    				String sex = res.getString("sex"); // 获取sex字段值
    				String birthday = res.getString("birthday"); // 获取birthday字段值
    				System.out.print("编号:" + id); // 输出信息
    				System.out.print(" 姓名:" + name);
    				System.out.print(" 性别:" + sex);
    				System.out.println(" 生日:" + birthday);
    			}
    		} catch (Exception e) { // 处理异常
    			e.printStackTrace(); // 输出异常信息
    		}
    	}
    }

    预处理语句

            向数据库发送一个SQL语句,数据库中的SQL解释器负责把SQL语句生成底层的内部命令,然后执行该命令,完成相关的数据操作。如果不断地向数据库提交SQL语句,肯定会增加数据库中SQL解释器的负担,影响执行的速度。

            对于JDBC,可以通过Connection对象的preparedStatement(String sql)方法对SQL语句进行预处理,生成数据库底层的内部命令,并将该命令封装在PreparedStatement对象中,通过调用该对象的相应方法执行底层数据库命令。这样应用程序能针对连接的数据库实现将SQL语句解释为数据库底层的内部命令,然后让数据库执行这个命令,这样可以减轻数据库的负担,提高访问数据库的速度。

    import java.sql.*;
    public class Prep { // 创建类Perp
    	static Connection con; // 声明Connection对象
    	static PreparedStatement sql; // 声明预处理对象
    	static ResultSet res; // 声明结果集对象
    	public Connection getConnection() { // 与数据库连接方法
    		try {
    			Class.forName("com.mysql.jdbc.Driver");
    			con = DriverManager.getConnection("jdbc:mysql:"
    					+ "//127.0.0.1:3306/test", "root", "123456");
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return con; // 返回Connection对象
    	}
    	
    	public static void main(String[] args) { // 主方法
    		Prep c = new Prep(); // 创建本类对象
    		con = c.getConnection(); // 获取与数据库的连接
    		try {
    			// 实例化预处理对象
    			sql = con.prepareStatement("select * from tb_stu"
    					+ " where id = ?");
    			sql.setInt(1, 4); // 设置参数
    			res = sql.executeQuery(); // 执行预处理语句
    			// 如果当前记录不是结果集中最后一行,则进入循环体
    			while (res.next()) {
    				String id = res.getString(1); // 获取结果集中第一列的值
    				String name = res.getString("name"); // 获取name列的列值
    				String sex = res.getString("sex"); // 获取sex列的列值
    				// 获取birthday列的列值
    				String birthday = res.getString("birthday");
    				System.out.print("编号:" + id); // 输出信息
    				System.out.print(" 姓名:" + name);
    				System.out.print(" 性别:" + sex);
    				System.out.println(" 生日:" + birthday);
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    }

    添加、修改、删除记录

    可以通过SQL语句对数据执行添加、修改和删除操作。可通过PreparedStatement类的指定参数动态地对数据表中原有数据进行修改操作,并通过executeUpdate()方法执行更新语句。

    import java.sql.*;
    
    public class Renewal { // 创建类
    	static Connection con; // 声明Connection对象
    	static PreparedStatement sql; // 声明PreparedStatement对象
    	static ResultSet res; // 声明ResultSet对象
    
    	public Connection getConnection() {
    		try {
    			Class.forName("com.mysql.jdbc.Driver");
    			con = DriverManager.getConnection("jdbc:mysql:"
    					+ "//127.0.0.1:3306/test", "root", "123456");
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return con;
    	}
    
    	public static void main(String[] args) {
    		Renewal c = new Renewal(); // 创建本类对象
    		con = c.getConnection(); // 调用连接数据库方法
    		try {
    			sql = con.prepareStatement("select * from tb_stu"); // 查询数据库
    			res = sql.executeQuery(); // 执行SQL语句
    			System.out.println("执行增加、修改、删除前数据:");
    			while (res.next()) {
    				String id = res.getString(1);
    				String name = res.getString("name");
    				String sex = res.getString("sex");
    				String birthday = res.getString("birthday"); // 遍历查询结果集
    				System.out.print("编号:" + id);
    				System.out.print(" 姓名:" + name);
    				System.out.print(" 性别:" + sex);
    				System.out.println(" 生日:" + birthday);
    			}
    			sql = con.prepareStatement("insert into tb_stu(name,sex,birthday) values(?,?,?)");
    			sql.setString(1, "张一"); // 预处理添加数据
    			sql.setString(2, "女");
    			sql.setString(3, "2012-12-1");
    			sql.executeUpdate();
    			sql = con.prepareStatement("update tb_stu set birthday "
    					+ "= ? where id = ? ");
    			sql.setString(1, "2012-12-02"); // 更新数据
    			sql.setInt(2, 1); // 更新数据
    			sql.executeUpdate();
    			Statement stmt = con.createStatement();
    			stmt.executeUpdate("delete from tb_stu where id = 1");
    			// 查询修改数据后的tb_stu表中数据
    			sql = con.prepareStatement("select * from tb_stu");
    			res = sql.executeQuery(); // 执行SQL语句
    			System.out.println("执行增加、修改、删除后的数据:");
    			while (res.next()) {
    				String id = res.getString(1);
    				String name = res.getString("name");
    				String sex = res.getString("sex");
    				String birthday = res.getString("birthday");
    				System.out.print("编号:" + id);
    				System.out.print(" 姓名:" + name);
    				System.out.print(" 性别:" + sex);
    				System.out.println(" 生日:" + birthday);
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    }
    

    展开全文
  • java数据库基本操作

    2009-09-15 13:43:00
    java 数据库基本操作 1、java数据库操作基本流程 2、几个常用的重要技巧: ·可滚动、更新的记录集 ·批量更新 ·事务处理 java数据库操作基本流程:取得数据库连接 - 执行sql语句 - 处理执行结果 - 释放...

    java 数据库基本操作

      1、java数据库操作基本流程

      2、几个常用的重要技巧:

      ·可滚动、更新的记录集

      ·批量更新

      ·事务处理

      java数据库操作基本流程:取得数据库连接 - 执行sql语句 - 处理执行结果 - 释放数据库连接

      1、取得数据库连接

      1)用DriverManager取数据库连接

      例子

      String className,url,uid,pwd;

      className = "oracle.jdbc.driver.OracleDriver";

      url = "jdbc:oracle:thin:@127.0.0.1:1521:orasvr;

      uid = "system";

      pwd = "manager";

      Class.forName(className);

      Connection cn = DriverManager.getConnection(url,uid,pwd);

      2)用jndi(java的命名和目录服务)方式

      例子

      String jndi = "jdbc/db";

      Context ctx = (Context) new InitialContext().lookup("java:comp/env");

      DataSource ds = (DataSource) ctx.lookup(jndi);

      Connection cn = ds.getConnection();

      多用于jsp中

      2、执行sql语句

      1)用Statement来执行sql语句

      String sql;

      Statement sm = cn.createStatement();

      sm.executeQuery(sql); // 执行数据查询语句(select)

      sm.executeUpdate(sql); // 执行数据更新语句(delete、update、insert、drop等)statement.close();

      2)用PreparedStatement来执行sql语句

      String sql;

      sql = "insert into user (id,name) values (?,?)";

      PreparedStatement ps = cn.prepareStatement(sql);

      ps.setInt(1,xxx);

      ps.setString(2,xxx);

      ...

      ResultSet rs = ps.executeQuery(); // 查询

      int c = ps.executeUpdate(); // 更新

      3、处理执行结果

      查询语句,返回记录集ResultSet

      更新语句,返回数字,表示该更新影响的记录数

      ResultSet的方法

      1、next(),将游标往后移动一行,如果成功返回true;否则返回false

      2、getInt("id")或getSting("name"),返回当前游标下某个字段的值

      4、释放连接

      cn.close();

      一般,先关闭ResultSet,然后关闭Statement(或者PreparedStatement);最后关闭Connection

      可滚动、更新的记录集

      1、创建可滚动、更新的Statement

      Statement sm = cn.createStatement(ResultSet.TYPE_SCROLL_ENSITIVE,ResultSet.CONCUR_READ_ONLY);

      该Statement取得的ResultSet就是可滚动的

      2、创建PreparedStatement时指定参数

      PreparedStatemet ps = cn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

      ResultSet.absolute(9000);

      ·批量更新

      1、Statement

      Statement sm = cn.createStatement();

      sm.addBatch(sql1);

      sm.addBatch(sql2);

      ...

      sm.executeBatch()

      一个Statement对象,可以执行多个sql语句以后,批量更新。这多个语句可以是delete、update、insert等或兼有

      2、PreparedStatement

      PreparedStatement ps = cn.preparedStatement(sql);

      {

      ps.setXXX(1,xxx);

      ...

      ps.addBatch();

      }

      ps.executeBatch();

      一个PreparedStatement,可以把一个sql语句,变换参数多次执行,一次更新。

      ·事务的处理

      1、关闭Connection的自动提交

      cn.setAutoCommit(false);

      2、执行一系列sql语句

      要点:执行每一个新的sql语句前,上一次执行sql语句的Statement(或者PreparedStatemet)必须先close

      Statement sm ;

      sm = cn.createStatement(insert into user...);

      sm.executeUpdate();

      sm.close();

      sm = cn.createStatement("insert into corp...);

      sm.executeUpdate();

      sm.close();

      3、提交

      cn.commit();

      4、如果发生异常,那么回滚

      cn.rollback();

    展开全文
  • java 数据库基本操作

    2008-12-04 21:51:45
    java 数据库基本操作 1、java数据库操作基本流程 2、几个常用的重要技巧: 可滚动、更新的记录集 批量更新 事务处理 java数据库操作基本流程:取得数据库连接 - 执行sql语句 - 处理执行结果 - 释放数据库...
    java 数据库基本操作
    1、java数据库操作基本流程
    2、几个常用的重要技巧:
    可滚动、更新的记录集
    批量更新
    事务处理

    java数据库操作基本流程:取得数据库连接 - 执行sql语句 - 处理执行结果 - 释放数据库连接
    1、取得数据库连接
    1)用DriverManager取数据库连接
    例子
    String className,url,uid,pwd;
    className = "oracle.jdbc.driver.OracleDriver";
    url = "jdbc:oracle:thin:@127.0.0.1:1521:orasvr;
    uid = "system";
    pwd = "manager";
    Class.forName(className);
    Connection cn = DriverManager.getConnection(url,uid,pwd);
    2)用jndi(java的命名和目录服务)方式
    例子
    String jndi = "jdbc/db";
    Context ctx = (Context) new InitialContext().lookup("java:comp/env");
    DataSource ds = (DataSource) ctx.lookup(jndi);
    Connection cn = ds.getConnection();
    多用于jsp中

    2、执行sql语句
    1)用Statement来执行sql语句
    String sql;
    Statement sm = cn.createStatement();
    sm.executeQuery(sql); // 执行数据查询语句(select)
    sm.executeUpdate(sql); // 执行数据更新语句(delete、update、insert、drop等)statement.close();
    2)用PreparedStatement来执行sql语句
    String sql;
    sql = "insert into user (id,name) values (?,?)";
    PreparedStatement ps = cn.prepareStatement(sql);
    ps.setInt(1,xxx);
    ps.setString(2,xxx);
    ...
    ResultSet rs = ps.executeQuery(); // 查询
    int c = ps.executeUpdate(); // 更新

    3、处理执行结果
    查询语句,返回记录集ResultSet
    更新语句,返回数字,表示该更新影响的记录数
    ResultSet的方法
    1、next(),将游标往后移动一行,如果成功返回true;否则返回false
    2、getInt("id")或getSting("name"),返回当前游标下某个字段的值

    4、释放连接
    cn.close();
    一般,先关闭ResultSet,然后关闭Statement(或者PreparedStatement);最后关闭Connection


    可滚动、更新的记录集
    1、创建可滚动、更新的Statement
    Statement sm = cn.createStatement(ResultSet.TYPE_SCROLL_ENSITIVE,ResultSet.CONCUR_READ_ONLY);
    该Statement取得的ResultSet就是可滚动的
    2、创建PreparedStatement时指定参数
    PreparedStatemet ps = cn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

    ResultSet.absolute(9000);
    批量更新
    1、Statement
    Statement sm = cn.createStatement();
    sm.addBatch(sql1);
    sm.addBatch(sql2);
    ...
    sm.executeBatch()
    一个Statement对象,可以执行多个sql语句以后,批量更新。这多个语句可以是delete、update、insert等或兼有
    2、PreparedStatement
    PreparedStatement ps = cn.preparedStatement(sql);
    {
    ps.setXXX(1,xxx);
    ...
    ps.addBatch();
    }
    ps.executeBatch();
    一个PreparedStatement,可以把一个sql语句,变换参数多次执行,一次更新。


    事务的处理
    1、关闭Connection的自动提交
    cn.setAutoCommit(false);
    2、执行一系列sql语句
    要点:执行每一个新的sql语句前,上一次执行sql语句的Statement(或者PreparedStatemet)必须先close
    Statement sm ;
    sm = cn.createStatement(insert into user...);
    sm.executeUpdate();
    sm.close();

    sm = cn.createStatement("insert into corp...);
    sm.executeUpdate();
    sm.close();

    3、提交
    cn.commit();
    4、如果发生异常,那么回滚
    cn.rollback();
    展开全文
  • Java数据库基本操作

    2007-04-20 15:02:00
    java 数据库基本操作1、java数据库操作基本流程2、几个常用的重要技巧: 可滚动、更新的记录集 批量更新 事务处理java数据库操作基本流程:取得数据库连接 - 执行sql语句 - 处理执行结果 - 释放数据库连接 1、...
  • Java 数据库基本操作

    2007-12-01 23:15:00
    Java数据库操作基本流程:取得数据库连接 - 执行sql语句 - 处理执行结果 - 释放数据库连接 1、取得数据库连接 1)用DriverManager取数据库连接 String className,url,uid,pwd; className = "oracle.jdbc.driver....
  • JAVA数据库基本操作,增删改查 JAVA数据库基本操作,增删改查
  • Java数据库基本操作  1、java数据库操作基本流程  2、几个常用的重要技巧:  ·可滚动、更新的记录集  ·批量更新  ·事务处理  java数据库操作基本流程:取得数据库连接-执行sql语句-处理执行结果-释放...
  • JAVA数据库基本操作指南 Java数据库操作基本流程:取得数据库连接 - 执行sql语句 - 处理执行结果 - 释放数据库连接。 一、取得数据库连接 1、用DriverManager取数据库连接 例子: ...
  • 1、java 数据库操作基本流程 2、几个常用的重要技巧: ·可滚动、更新的记录集 ·批量更新 ·事务处理 java 数据库操作基本流程:取得数据库连接- 执行sql 语句- 处理执行结果- 释放数据库连接
  • java 数据库基本操作1、java数据库操作基本流程2、几个常用的重要技巧: 可滚动、更新的记录集 批量更新 事务处理 java数据库操作基本流程:取得数据库连接 - 执行sql语句 - 处理执行结果 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,981
精华内容 2,392
关键字:

java数据库基本操作

java 订阅