• 145694

    文章

  • 857

    评论

  • 13

    友链

  • 最近新加了换肤功能,大家多来逛逛吧~~~~
  • 喜欢这个网站的朋友可以加一下QQ群,我们一起交流技术。

JDBC编程:JDBC原理和基础编程


什么是JDBC:

JDBC(Java DataBase Connectivity)就是Java数据库连接,简单说就是用Java语言来操作数据库。原来我们操作数据库是在控制台使用SQL语句来操作数据库,JDBC是用Java语言向数据库发送SQL语句。

JDBC

特点:

1)跨平台运行:这是继承了Java语言的“一次编译,到处运行”的特点;

2)不受数据库供应商的限制:巧妙在于JDBC设有两种接口,一个是面向应用程序层,其作用是使得开发人员通过SQL调用数据库和处理结果,而不需要考虑数据库的提供商;另一个是驱动程序层,处理与具体驱动程序的交互;

常用接口:

1)Driver接口: Driver接口由数据库厂家提供,作为java开发人员,只需要使用Driver接口就可以了。

2)Connection接口: Connection与特定数据库的连接(会话),在连接上下文中执行sql语句并返回结果。

常用方法:

  • createStatement():创建向数据库发送sql的statement对象。
  • prepareStatement(sql) :创建向数据库发送预编译sql的PrepareSatement对象。
  • prepareCall(sql):创建执行存储过程的callableStatement对象。
  • setAutoCommit(boolean autoCommit):设置事务是否自动提交。
  • commit() :在链接上提交事务。
  • rollback() :在此链接上回滚事务。

3)Statement接口: 用于执行静态SQL语句并返回它所生成结果的对象。

三种Statement类:

  • Statement:由createStatement创建,用于发送简单的SQL语句(不带参数)。
  • PreparedStatement :继承自Statement接口,由preparedStatement创建,用于发送含有一个或多个参数的SQL语句。
  • CallableStatement:继承自PreparedStatement接口,由方法prepareCall创建,用于调用存储过程。

常用Statement方法:

  • execute(String sql):运行语句,返回是否有结果集
  • executeQuery(String sql):运行select语句,执行查询操作,返回ResultSet结果集。
  • executeUpdate(String sql):运行insert/update/delete语句,执行更新操作。
  • addBatch(String sql) :把多条sql语句放到一个批处理中。
  • executeBatch():向数据库发送一批sql语句执行。

4)ResultSet接口: 执行sql查询语句返回的结果集。

ResultSet提供检索不同类型字段的方法:

  • getString(int index)、getString(String columnName):获得在数据库里是varchar、char等类型的数据对象。
  • getFloat(int index)、getFloat(String columnName):获得在数据库里是Float类型的数据对象。
  • getDate(int index)、getDate(String columnName):获得在数据库里是Date类型的数据。
  • getBoolean(int index)、getBoolean(String columnName):获得在数据库里是Boolean类型的数据。
  • getObject(int index)、getObject(String columnName):获取在数据库里任意类型的数据。

ResultSet对结果集进行滚动的方法:

  • next():移动到下一行;
  • Previous():移动到前一行;
  • absolute(int row):移动到指定行;
  • beforeFirst():移动resultSet的最前面;
  • afterLast() :移动到resultSet的最后面;

【使用后依次关闭对象及连接:ResultSet → Statement → Connection】

编程步骤:

1)加载驱动程序;

Class.forName(driverClass)
//加载MySql驱动
Class.forName("com.mysql.jdbc.Driver")
//加载Oracle驱动
Class.forName("oracle.jdbc.driver.OracleDriver")

2)获取数据连接:通过DriverManager类创建数据库连接对象Connection;

 Connection conn = DriverManager.getConnection(url, user,password);

3)创建Statement对象:

 Statement stmt = conn.createStatement();

4)调用Statement对象的相关方法执行相对应的 SQL 语句:通过execuUpdate()方法用来数据的更新,包括插入和删除等操作;

5)关闭数据库连接:使用完数据库或者不需要访问数据库时,通过Connection的close() 方法及时关闭数据连接;

例:

获取连接数据库资源

private static ResourceBundle bundle= ResourceBundle.getBundle("connect");//资源包
private static String driver= bundle.getString("driver");//驱动程序
private static String url=bundle.getString("url"); //数据库连接地址
private static String user=bundle.getString("user");//用户名称
private static String password=bundle.getString("password");//用户密码</pre>

创建连接

public Connection getConn() {
		try {
			Class.forName(driver);//加载驱动
			Connection conn;
			conn=DriverManager.getConnection(url, user, password);//创建连接
			return conn;
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}

执行方法

public void Update(String sql, ArrayList<String> parameters) {
	Connection connection = getConn();//获取连接
	PreparedStatement ps = null;//初始化陈述清单
	try {
		connection.setAutoCommit(false);// 更改JDBC事务的默认提交方式,默认是true,是自动提交;
		ps = connection.prepareStatement(sql);//设置sql语句	

        for (int i = 0; i < parameters.size(); i++) {
		ps.setString(i + 1, parameters.get(i));//设置参数
        }
        ps.executeUpdate();
        connection.commit();//提交JDBC事务,如果没问题,这时才真正的删除了;
        connection.setAutoCommit(true);// 恢复JDBC事务的默认提交方式;

	} catch (SQLException e) {
		try {
             //回滚JDBC事务,出现异常,为保证数据完整性,此次操作回滚,不删除;
			connection.rollback();
		} catch (SQLException e1) {
		e1.printStackTrace();
 	    }
        e.printStackTrace();
	}finally{

		try {
		    //关闭资源
            ps.close();connection.close();
        } catch (SQLException e) {e.printStackTrace(); }}}

结语:谢谢大家阅读,想要免费获取更多java基础知识宝典,可以戳我一起交流学习!


695856371Web网页设计师②群 | 喜欢本站的朋友可以收藏本站,或者加入我们大家一起来交流技术!

0条评论

Loading...


发表评论

电子邮件地址不会被公开。 必填项已用*标注

自定义皮肤 主体内容背景
打开支付宝扫码付款购买视频教程
遇到问题联系客服QQ:419400980
注册梁钟霖个人博客