JDBC编程步骤 使用statement和prestatement对象 1.使用DriverManager类注册特定厂商的JDBC驱动程序 Class.forName("org.apache.derby.jdbc.ClientDriver"); 2.建立与DBMS的会话连接 String url = "jdbc:derby://localhost:1527/DBName"; Connection con = DriverManager.getConnection(url,"DBusername","DBpassword"); 3.创建SQL查询对象 Statement stmt = con.createStatement(); 4.提交查询并接受结果 String query = "select * from Person"; ResultSet rs = stmt.executeQuery(query); 插入/删除/更新均为stmt.executeUpdate(String sql); 方法区别: executeQuery返回值为ResultSet对象 executeUpdate返回值为影响操作的行数 5.从包裹对象中提取数据 while(rs.next()){//判断是否还有下一行结果 System.out.println("name"+rs.getName()); System.out.println("sex"+rs.getSex()); //在同一行中 访问 即取得属性的顺序不变 } Statement 和 Preparedstatement 对象的区别在于后者提供预处理机制,性能更好,更为灵活,更加安全 Statement实例: public static void main(String[] args){ Class.forName("org.apache.derby.jdbc.ClientDriver"); String url = "jdbc:derby://localhost:1527/DBName"; Connection connection = DriverManager.getConnection(url,"root","root"); Statement stmt = connection.createStatement();//创建包裹对象 //查询数据 ResultSet rs = stmt.executeQuery("select * from test"); System.out.println("-%5d","-10s","-10s","id","name","password"); while(rs.next()){ int id = rs.getInt("id"); String name = rs.getString("name"); String password = rs.getString("password"); System.out.println("-%5d","-10s","-10s","id","name","password"); } rs.close(); //插入数据 rs = stmt.executeQuery("select max(id) from test"); int id=20; String name="zyh"; String password="harbor"; String insertsql= "INSERT INTO TEST VALUES " + "("+id+","+name+",'"+password+"')"; int rows = stmt.executeUpdate(insertsql); System.out.println(rows+"rows has affected"); //删除数据 String delsql="DELETE FROM TEST WHERE ID="+id; rows = stmt.executeUpdate(delsql); System.out.println(rows+"rows has affected"); stmt.close(); connection.close(); } Prestatement实例: public static void main(String[] args){ private final String url = "jdbc:derby://localhost:1527/DBName"; try{ Class.forName("org.apache.derby.jdbc.ClientDriver"); }catch(ClassNotFoundException e){e.getMessage();return;} Connection connection = null; PrepardStatement stmt = null; ResultSet rs = null; try{ connection = DriverManager.getConnection(url,"root","root"); //插入数据 stmt = connection.preparedStatement("selct max(id) from test"); rs = stmt.executeQuery(); rs.next(); int nextID = rs.getInt(1)+1; rs.close(); stmt.close(); int id=nextID; String name="harbor"; String password="blue"; stmt = connection.preparedStatement("INSERT INTO TEST VALUES(?,?,?)"); stmt.setInt(1,id); stmt.setString(2,name); stmt.setString(3,password); int rows = stmt.executeUpdate(); System.out.println(rows+"rows has affected"); stmt.close(); //查询数据 stmt = connection.preparedStatement("selct * from test where id=?"); stmt.setId(1,id); rs = stmt.executeQuery(); while(rs.next()){ id = rs.getInt("id"); name = rs.getString("name"); password = rs.getString("password"); System.out.println("-%5d","-10s","-10s","id","name","password"); } rs.close(); stmt.close(); //删除数据 stmt = connection.preparedStatement("DELETE FROM TEST WHERE ID=?"); stmt.setId(1,id); rows = stmt.executeUpdate(); System.out.println(rows+"rows has affected"); }catch(SQLException e){ e.printStackTrace(); }finally{ if(rs!=null){try{rs.close();}catch(SQLException e){}} if(stmt!=null){try{stmt.close();}catch(SQLException e){}} if(connection!=null){try{connection.close();}catch(SQLException e){}} } } 使用datasource对象(数据库连接池) InitialContext ctx = new InitialContext();//在命名空间中用容器缺省的信息创建JDNI上下文 ds = (DataSource)ctx.lookup(jdbc/DBName);//用JDNI的名称获得DataSource实例 用法: //服务组件中获取ds对象; private DataSource ds=null; try{ InitialContext ctx = new InitialContext(); ds = (DataSource)ctx.lookup("java:comp/env/jdbc/JDBCNAME"); }catch(Exception e){ throw new SQLException(e); } //可以写在静态语句块中,也可写在构造器当中 构造器: public BookService() throws BookStorageException { try { Context ctx = new InitialContext(); DataSource dataSource = (DataSource) ctx.lookup("java:comp/env/jdbc/test"); bookDAO = new BookDAO(dataSource); } catch (Exception e) { throw new BookStorageException(e.getMessage()); } } 静态语句块: private static BookDAO bookDAO; static { try{ Context ctx = new InitialContext(); DataSource dataSource = (DataSource) ctx.lookup("java:comp/env/jdbc/test"); bookDAO = new BookDAO(dataSource); }catch(Exception e) { e.printStackTrace(); } } 可能遇到的错误:javax.naming.NoInitialContextException 解决办法,jndi是在tomcat中部署的,而测试类中只有jdk环境不允许,所以需要测试的话要运行web容器
相关推荐
使用 JDBC 访问数据库存在一些问题,如每一次 Web 请求都要建立一次数据库连接,建立连接是一个费时的活动,每次都得花费 0.05s~1s 的时间,而且系统还要分配内存资源。 数据库连接池(Connection Pool)的工作...
JDBC连接数据库总结 JDBC(Java Database Connectivity)是一种Java API,用于连接和操作关系数据库。它提供了一种独立于数据库管理系统的方式来访问和操作数据库。 连接数据库 在JDBC中,连接数据库是通过`...
此外,他们还可能讨论了使用JDBC的优缺点,比如它简化了数据库操作,但可能涉及一些性能和安全问题。 通过这样的实验,学生不仅能熟悉数据库的基本操作,还能深入理解数据库连接池的概念,学习如何使用连接池(如C3...
下面将详细阐述JDBC操作数据库的基本步骤以及一些关键知识点。 1. **加载数据库驱动**: - 在开始数据库操作前,必须先加载对应的数据库驱动。在Java中,这通常通过`Class.forName()`方法完成。例如,对于Oracle...
- 数据库连接字符串:`String RL="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=TESTDB";` - `jdbc:microsoft:sqlserver`是特定于SQL Server的JDBC协议。 - `localhost:1433`表示数据库服务器地址及...
使用JDBC连接Access数据库时,URL可能类似于`jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\path\to\your\db.accdb`。 此外,`源码`标签可能暗示了博文包含了实际的Java代码示例,而`工具`...
首先,JDBC驱动是Java连接数据库的标准接口,它允许Java开发者使用SQL语言执行数据库操作。试用过程中,作者强调了JDBC驱动的跨平台特性,这得益于Java的“一次编写,到处运行”理念。无论是Windows XP还是SUN ...
同时,JDBC(Java数据库连接)是连接JAVA应用和数据库的重要桥梁,我们学习了如何编写DAO(数据访问对象)层,通过预编译的PreparedStatement来防止SQL注入等安全问题。 此外,实训项目往往涉及到MVC(模型-视图-...
**示例代码**:下面是一个简单的示例,演示如何使用JDBC连接Oracle数据库并执行SQL查询: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql....
Java 连接 SQL Server 数据库是 Java 开发中一个非常重要的步骤,学习 Java 首先应该学会怎么样连接数据库。下面是 Java 连接 SQL Server 2000 的基本方法和心得。 下载SQL Server 2000 Driver for JDBC 下载 SQL ...
通过以上步骤,你应该能够成功地使用JDBC连接到SQL SERVER 2008。不过,为了确保连接的安全性和性能,建议使用连接池(如Apache DBCP或HikariCP)来管理数据库连接,并考虑使用PreparedStatement来执行SQL语句,以...
接着,创建了一个名为`DBUtil`的工具类,该类提供静态方法`getConnection()`来获取数据库连接,使用了JDBC API的`Class.forName()`加载驱动,然后通过`DriverManager.getConnection()`建立连接。 实验一之后,实验...
这些驱动本质上是一些实现了JDBC接口的类,并被打包成JAR文件供Java程序使用。不同数据库之间的操作机制存在差异,因此JDBC驱动也会有所不同,但作为Java开发者,我们主要关注的是JDBC的API接口,而不必关心具体的...
JDBC(Java Database Connectivity)则是Java平台的标准接口,用于连接Java应用程序和各种数据库。 第二个目标是掌握通过编程控制数据库的方法。在本实验中,学生需要使用C#或Java编写代码,与MS SQL Server 2008...
标题中的“JDBC.rar_jdbc PostgreSQL_oracle_postgresql”表明这个压缩包文件包含了关于Java数据库连接(JDBC)...学习这些内容,开发者可以更好地理解和使用JDBC连接不同的数据库系统,提升数据库操作的效率和灵活性。
在SSM项目中,数据库连接管理是至关重要的,而Druid则是一个优秀的数据库连接池组件,它由阿里巴巴开源并维护,提供了强大的监控和扩展功能。 Druid连接池的主要优点包括: 1. **性能优异**:Druid经过大量的性能...
使用Java客户端编程,添加数据:English:45 Math:89 Computer:100,使用JDBC连接MySQL数据库,执行insert语句,插入数据到学生表中,并输出结果。 ### NoSQL数据库操作 使用HBase、Redis、MongoDB等NoSQL数据库...
3. **JDBC连接池**:为了提高性能和资源管理,项目中使用了连接池。连接池预先创建并维护一定数量的数据库连接,当应用程序需要时可以快速获取,用完后归还。这减少了创建和关闭数据库连接的开销。常见的连接池实现...