使用jdbc连接数据库
来源:互联网 发布:网络赌搏 编辑:程序博客网 时间:2024/05/22 14:03
四步:加载驱动程序;连接数据库;访问数据库;执行查询。
(加载驱动程序)
(1)JDBC中的Driver接口,是任何数据库提供商的驱动类必须实现的接口,驱动类必须实现该接口中的所有方法。
Driver接口中共有以上六个方法。其中两个相对很重要,它是供DriverManager调用的,其它四个很简单就不说了。
Connection connect(String url, java.util.Properties info) throws SQLException:这个方法是数据库提供商的驱动必须实现的方法,它主要是使用指定的URL和与具体提供商相关的信息建立一个连接。
boolean acceptsURL(String url) throws SQLException方法也是数据库提供商的驱动必须实现的方法,主要判定某个该驱动是否介绍该URL。(一般在建立连接之前调用。)
(2)DriverManager类是整个JDBC的起点,利用它可以创建连接,从而完成后续的操作。主要有四类:1.初始化;2.驱动的注册、查询、取消注册;3.建立连接;4.日志相关。
初始化
static void initialize() { if (initialized) { return; } //已经初始化就返回!(初始化了就算了) initialized = true; //设置此标识符,表示已经完成初始化工作 loadInitialDrivers(); //初始化工作主要是完成所有驱动的加载 println("JDBC DriverManager initialized");}
驱动的注册、查询、取消注册
(连接数据库)(访问数据库)(执行查询)
连接数据库首先需要加载驱动,不同的数据库的驱动是不一样的,比如Mysql的驱动如下,但是JDBC4以后已经可以自动加载驱动了,所以可以不写这个:
com.mysql.jdbc.Driver
然后通过DriverManager类的getConnection方法建立连接时,需要注意getConnection会抛出SQLException异常,需要在try/catch块中捕获。然后创建Statement对象,用来向数据库发送查询和命令,它由Connection的createStatement方法创建,其代码如下:
Statement statement=connection.createStatement();
大部分数据库驱动程序允许在同一个连接中打开多个并行的Statement对象,创建好Statement对象之后,就可以使用它来进行数据库的操作了。
最后处理结果,最常用的是ResultSet的next()方法移动,每次移动一行,在每一行中,ResultSet提供了各种getX方法。它们都以列名或索引为参数,有各种不同的Java类型返回结果。
最后记得关闭Connection和ResultSettry{ int count = 0; String url = "jdbc:MySql://localhost/DataBaseName"; String user = "root"; String password = "11111"; Connection conn = DriverManager.getConnection(url, user, password); Statement stm = conn.createStatement(); String query = "select * from tableName";//也可以分成很多个方法,增删改查。 ResultSet rst = stm.executeQuery(query); while(rst.next()){ count++; }}catch(SQLException SQe){ SQe.printStackTrace();} finally { rst.close(); conn.close();}
resultSet遍历整个表的过程
private static List ResultSetList(ResultSet rs) throws SQLException{ List list = new ArrayList(); ResultSetMetaData rsmd = rs.getMetaData(); //获得数据库结构 int ColumnCount = rsmd.getColumnCount(); //数据库列数// int RanksCount =rsmd.get while(rs.next()){ Map rowMap = new HashMap(); for(int i = 1 ; i<=ColumnCount ; i++){ System.out.println(rsmd.getColumnName(i)); //数据库的列名 System.out.println(rs.getObject(i)); //对应数据库的内容 rowMap.put(rsmd.getColumnName(i), rs.getObject(i)); } list.add(rowMap); } return list; }
得到的结果大概如下:
[{password=32132, id=1, username=232}, {password=wewqeqweqw, id=4, username=232}]
其中rsdm.getColumnName(i),i从1开始的原因如下:
/** * Get the designated column's name. * * @param column the first column is 1, the second is 2, ... * @return column name * @exception SQLException if a database access error occurs */String getColumnName(int column) throws SQLException;
- 使用JDBC连接数据库
- 使用JDBC连接数据库
- 使用JDBC连接数据库
- 使用JDBC连接数据库
- 使用JDBC连接数据库
- 使用JDBC连接数据库
- 使用JDBC连接数据库
- 使用jdbc连接数据库
- 使用JDBC连接数据库
- 使用jdbc连接数据库
- 使用JDBC连接数据库
- 使用JDBC连接MYSQL数据库
- 使用JDBC连接MYSQL数据库
- java使用JDBC连接数据库
- java使用JDBC连接数据库
- 使用JDBC连接各种数据库
- 使用JDBC连接各种数据库
- 使用jdbc连接sql数据库
- Android项目资源
- 头疼的算法与数据结构——二维数组中的查找
- 基于angularjs实现省市二级联动,并且可对选项实现增删
- ant基础
- 主席树或线段树-poj2104K-th Number
- 使用jdbc连接数据库
- 内存池设计与实现
- JSch:纯JAVA实现SFTP文件上传和下载
- 使用jstack查看最耗CPU的java的线程
- c++第三次作业
- 用用程序缺少*.dll以及0xc000007b无法正常启动
- 怎么安全的移除完成端口的key
- 一些Codeforces的水题
- java泛型的一些研究