首页 > 编程知识 正文

jdbc连接数据库步骤代码,jdbc建立数据库连接

时间:2023-05-06 04:01:59 阅读:110250 作者:659

JDBC连接数据库总结了JDBC连接数据库的特定步骤的实现

JDBC连接到数据库的步骤3358 www.Sina.com/http://www.Sina.com/http://www.Sina.com/3358 www.Sina.com/3358 ww.Sina 此包将允许java程序首次连接到数据库。 如果导入后无法连接到数据库,则数据库版本可能太高,需要更高级别的驱动程序包注册驱动包。

获取连接

class.forname (com.MySQL.JDBC.driver ) /通常,如果通过反射在注册驱动下获取连接并获取连接,则需要先获取数据库的url、用户名和密码,然后再进行连接

获取数据库操作对象

//url数据的url地址url: jdbc:mysql://要访问的地址:3306/数据库名称3306是MySQL的缺省端口//user是数据库用户名user: 表示的user是数据库密码password:密码string URL=' JDBC : MySQL ://localhost 33603306/test '; String user='root '; String password='123456 '; connection conn=driver manager.getconnection (URL,user,password ); 获取数据库操作对象要获取数据库操作对象,可以使用执行sql语句处理查询结果集两种方法获取数据库操作对象。

释放资源操作数据库时直接编译SQL语句,采用字符串匹配连接的方式连接SQL语句。 使用这种方式操作数据库对象时,容易发生SQL注入现象。

使用mysql-connector-java-5.1.32.jar数据库时,可以先预编译SQL语句,然后注入值,从而使注入SQL的难度更小。

mysql-connector-java-8.0.24.jar容易引起SQL注入现象,但根据需要使用具体实现操作数据库。 例如,如果需要动态输入是否对搜索到的数据进行排序,则需要实现具体实现

Statement

statement stmt=conn.create statement (; //Statement方式数据库操作对象preparedstatementps=conn.preparestatement (SQL ); //PreparedStatement方法获取,预编译SQL语句执行SQL语句要执行添加/删除(DML )语句,请执行**executeUpdate ) )PreparedStatementexecuteQuery

Statement:

String sql='select e.ename,e.sal from emp e '; //DQL语句stmt.executequery(SQL; //Statement方式ps.executeQuery (; //PreparedStatement方法先执行了SQL语句,因此不再需要在此处传递SQL=' updateempsetsal=sal-1000 where empno=?' ; //DQL语句PreparedStatement方法//PreparedStatement在下标中没有0,所以从1添加到后面,第一个注入的值是1,第二个是2,输入PS.setint(1, 7369 )按顺序向后推//SQL语句中注入值的SQL语句已经执行,因此这里只需传递值即可,string SQL=' updateempsetsal=sal-1000 where empno=' num //DQL语句Statement方式stmt.executeupdate(SQL; 注意//PS和stmt是在前面的步骤中获取数据库连接对象而获得的对象

要导入的数据类型使用set的哪种类型的方法

只有处理查询结果集的查询(DQL )语句才有结果集,通常用ResultSet类封装结果集

PreparedStatement:

String sql='select ename,sal from emp '; ResultSet rs=stmt。

executeQuery(sql); //接收返回的结果集ResultSet rs = ps.executeQuery();while(rs.next()){ //rs.next()表示将光标往下一行读取下面一行的数据//根据字段名来读取数据rs.getString("ename"); //获取查询出来的ename 数据拿到了后续要怎么操作就看自己的需求了,这里就不做演示rs.getDouble("sal"); //获取查询出来的sal//根据下标来读取数据rs.getString(1); //获取查询出来的enamers.getDouble(2);//获取查询出来的sal} 释放资源

释放资源时,需要先进行判断是否存在这个资源,然后再将这个资源关闭,一般是从后往前关闭,先创建的后关闭。

具体实现

if (rs != null){ try{ rs.close(); }catch (SQLException e){ e.printStackTrace(); } } if (stmt != null){ try{ stmt.close(); }catch (SQLException e){ e.printStackTrace(); } } if (conn != null){ try{ conn.close(); }catch (SQLException e){ e.printStackTrace(); } } 总结

一般来说,获取数据连接时数据库的url,用户名,密码,驱动类型一般写在db.properties配置文件中,因为这样以后数据库信息更改之后易于维护。并且将获取数据连接,释放资源一般封装在一个工具类DBUtlis类中,封装之后就不会经常性的写重复的代码,下面展示一个完整的JDBC连接操作。

db.properties配置文件的编写

db.properties配置文件需要写在resourses包中

driver=com.mysql.jdbc.Driver //驱动类型url=jdbc:mysql://localhost:3306/test //urluser=root //数据库用户名password=123456 //数据库密码 DBUtils文件的编写 // 数据库工具类public class DBUtils { //工具类中的构造方法一般都是私有化的,为什么? //构造方法私有化是为了防止new对象 private DBUtils(){} //类加载时绑定属性资源文件 通过次类来绑定db.properties文件以此来获取db.properties文件中的信息 private static ResourceBundle bundle = ResourceBundle.getBundle("resources/db"); //注册驱动 static { try { Class.forName(bundle.getString("driver")); } catch (ClassNotFoundException e) { e.printStackTrace(); } } //获取数据库连接对象 public static Connection getConnection() throws SQLException { String url = bundle.getString("url"); //获取url String user = bundle.getString("user"); //获取数据库用户名 String password = bundle.getString("password"); //获取数据库密码 Connection conn = DriverManager.getConnection(url,user,password); return conn; } //释放资源 public static void close(Connection conn, Statement stmt, ResultSet rs){ if (rs != null){ try{ rs.close(); }catch (SQLException e){ e.printStackTrace(); } } if (stmt != null){ try{ stmt.close(); }catch (SQLException e){ e.printStackTrace(); } } if (conn != null){ try{ conn.close(); }catch (SQLException e){ e.printStackTrace(); } } }} 测试类的编写

这里用PreparedStatementa来操作对象

// 测试DBUtilspublic class JDBCTest05 { public static void main(String[] args) { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { conn = DBUtils.getConnection(); String sql = "select ename,sal from emp where ename like ?"; ps = conn.prepareStatement(sql); ps.setString(1,"%s%"); rs = ps.executeQuery(); while (rs.next()){ System.out.println(rs.getString("ename")+","+rs.getDouble("sal")); } } catch (SQLException e) { e.printStackTrace(); }finally { DBUtils.close(conn,ps,rs); } }}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。