JDBC连接数据库教程:从加载驱动到建立连接

需积分: 50 10 下载量 57 浏览量 更新于2024-09-09 2 收藏 136KB PDF 举报
"这篇内容介绍了如何使用JDBC连接数据库,主要针对初学者,包括加载JDBC驱动、构建连接URL和创建数据库连接等关键步骤。" JDBC(Java Database Connectivity)是Java语言中用来规范应用程序如何访问数据库的标准接口,使得开发者能够使用统一的方式来处理不同的数据库。以下是对JDBC连接数据库步骤的详细解释: 1. 加载JDBC驱动程序 在进行数据库连接前,我们需要加载对应数据库的JDBC驱动。这通常通过调用`Class.forName()`方法完成,将数据库驱动的全限定类名作为参数传递。例如,对于MySQL,驱动类名是`com.mysql.jdbc.Driver`。加载驱动实际上是让JVM识别并实例化这个驱动类,这样`DriverManager`才能知道如何建立到数据库的连接。 ```java try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { System.out.println("找不到驱动程序类,加载驱动失败!"); e.printStackTrace(); } ``` 2. 提供JDBC连接的URL 连接URL是数据库连接的关键,它指定了连接的协议、子协议和数据源标识。基本格式如下: ``` jdbc:子协议:数据源标识 ``` - 协议:始终以`jdbc`开头。 - 子协议:对应于数据库类型,如`mysql`代表MySQL数据库。 - 数据源标识:包含数据库服务器地址、端口号以及数据库名称。例如,`localhost:3306`表示本地主机的3306端口,`test`是数据库名。 MySQL的示例连接URL可能如下: ``` jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=gbk ``` 其中的参数`useUnicode=true`用于开启Unicode字符集支持,`characterEncoding=gbk`设定字符编码方式为GBK。 3. 创建数据库的连接 要获取到数据库的连接,我们需要通过`DriverManager`的`getConnection()`方法。此方法需要传入三个参数:连接URL、用户名和密码。 ```java String url = "jdbc:mysql://localhost:3306/test"; String username = "root"; String password = "root"; try { Connection conn = DriverManager.getConnection(url, username, password); // 使用连接对象conn执行数据库操作 } catch (SQLException e) { e.printStackTrace(); } ``` 成功调用`getConnection()`后,会返回一个`Connection`对象,代表了与数据库的连接。有了这个对象,我们就可以执行SQL语句,进行数据查询、更新等操作。 JDBC连接数据库的基本流程包括加载驱动、构造连接URL和创建连接,这三个步骤是所有基于JDBC的数据库操作的基础。在实际开发中,为了代码的健壮性和可维护性,通常会将这些步骤封装到一个数据库连接池中,以便更高效地管理和复用数据库连接。
2009-12-23 上传
DBConnectionManager.java //连接数据库用的 import java.sql.*; public class DBConnectionManager { private String driverName="com.microsoft.jdbc.sqlserver.SQLServerDriver"; private String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=demo"; private String user="sa"; private String password=""; public String getDriverName() { return driverName; } public void setDriverName(String driverName) { this.driverName = driverName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getUser() { return user; } public void setUser(String user) { this.user = user; } public Connection getConnection(){ try{ Class.forName(driverName); return DriverManager.getConnection(url, user, password); }catch(Exception e){ e.printStackTrace(); return null; } } } DBSQLManager.java //操作数据库用的 import java.sql.*; public class DBSQLManager { protected Connection con=null;//Connection对象 protected Statement stmt=null;//Statement对象 protected ResultSet rs=null;//记录结果集 protected String sql=""; //SQL语句 public DBSQLManager(){ try { DBConnectionManager dcm=new DBConnectionManager(); con=dcm.getConnection(); //con.setAutoCommit(false);//添加事物,既是否自动提交 stmt=con.createStatement(); } catch (SQLException e) { e.printStackTrace(); } } public Statement getStmt(){ return stmt; } public Connection getCon(){ return con; } public ResultSet getRs(){ return rs; } public void setSql(String sql){ this.sql=sql; } public String getSql(){ return sql; } //查找 public void execueQuery(){ try { rs=stmt.executeQuery(sql); } catch (SQLException e) { e.printStackTrace(); } } //更新 public void executeUpdate(){ try { stmt.executeUpdate(sql); } catch (SQLException e) { e.printStackTrace(); } } //关闭 public void close(){ if(rs!=null){ try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } rs=null; } if(stmt!=null){ try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } stmt=null; } try { con.close(); } catch (SQLException e) { e.printStackTrace(); } con=null; } } SqlOperate.java //用来调用数据库操作语句 import java.sql.ResultSet; import java.sql.SQLException; public class SqlOperate { //插入,修改,删除 public void insOrModOrDel(String sql){ DBSQLManager dbsm=new DBSQLManager(); dbsm.getStmt(); dbsm.setSql(sql); dbsm.executeUpdate(); dbsm.close(); } //显示 public void display(String sql){ DBSQLManager dbsm=new DBSQLManager(); dbsm.getStmt(); dbsm.setSql(sql); dbsm.execueQuery(); ResultSet rs=dbsm.getRs(); try { while(rs!=null&&rs.next()){ System.out.print(rs.getObject(1)+"\t"); System.out.print(rs.getObject(2)+"\t"); System.out.print(rs.getObject(3)+"\t"); System.out.println(rs.getObject(4)); } dbsm.close(); } catch (SQLException e) { e.printStackTrace(); } } } SqlMain.java //数据库的测试主函数 public class SqlMain { public static void main(String[] args){ SqlOperate sqlOpt=new SqlOperate(); // sqlOpt.insOrModOrDel("insert into user1 values('qianhaifei',999999,'qianhaifei@163.com')");//插入 // sqlOpt.insOrModOrDel("update user1 set username='weixiangyang' where id=4");//修改 // sqlOpt.insOrModOrDel("delete from user1 where username='weixy2000'");//删除 sqlOpt.display("select *from user1");//显示 } }