在数据库的连接中如果没有用到框架,如Herbinate或者是Spring只有jsp和servlet就可以用JDBC进行连库,在进行连接数据库中主要是进行四步的操作:
一、得到Connection对象。
1、准备四大参数:
①指定驱动:driverClassName 驱动类名称,他在驱动包中,可以在网上找到
>每个驱动包中,必须有一个类实现了java.sql.Driver接口
> mysql的驱动包中提供的驱动类名称为:com.mysql.jdbc.Driver
②URL:数据库服务器在哪里
>分为三段
>第一段:第二段:第三段
>第一段:jdbc
>第二段:厂商名称,例如:mysql
>第三段:由厂商自己提供
>完整的:jdbc:mysql://localhost:3306/数据库名称
③username:root(用户名数据库默认的一般为root)
④password:123456(密码 自己设定的在这里我的数据库一般为123456密码)
2、加载驱动类:
Class.forName(driverClassName);
3、得到Connection
得到Connection:使用DriverManager类的静态方法,得到Connection
Connection con = DriverManager.getConnectionn(url, username, password);
数据库连接的可能异常处理:
I、如果是ClassNotFoundException:
①没有导包
②driverClassName写错了
II、如果是SQLException:
①查看是否安装了mysql数据库
②url、username、password是否正确。
二、第二步:得到Statement
>Statement stmt = con.createStatement();
三、第三步:发送sql语句
发送更新(insert、update、delete)的语句
int row = stmt.executeUpdate(String sql);
使用statement的executeUpdate方法
发送查询语句:
使用statement的executeQuery(String sql)方法
ResultSet rs = stmt.executeQuery(String sql);
ResultSet 为结果集
四、第四步:操作ResultSet,从中获取数据
>ResultSet中内部有个行光标(默认在第一行上面beforeFirst)
>resultSet的next()方法可以把行光标向下移动一行。
next()方法返回boolean值,表示当前行是否存在!
rs.next();
rs操作列的方法:
>rs.getXxx()系列方法
>rs.getInt(1)
>rs.getString(2)
>rs.getDate(3)
>rs.getObject(4)
参数为int类型,表示第几列
String getString(int i)获取第i列的数据,转换成String类型返回
Xxx getXXX(String colName)获取指定列名称的列数据
rs.getString("ename");获取当前行,名为ename的列数据
五、第五步:关闭资源
> 倒关!后得到的先关闭,
rs.close();
stmt.close();
con.close();
加载驱动类
Class.forName(driverClassName)
>加载了驱动类(加载类会做什么)
*加载一个类时,会执行这个类的static块!
在加载驱动类时,会执行static块,器内容如下:
static{
try{
java.sql.DriverManager.registerDriver(new Driver());
}catch(SQLException E){
throw new RuntimeException("Can't regidter driver!")
}
}
把驱动类注册给了DriverManager
=================================================================
ResultSet
操作行:
*void beforeFirst(): 把光标放到第一行的后面,这也是光标默认的位置;
*void afterLast(): 把光标放到最后一行的后面;
*boolean first(): 把光标放到第一行的位置上,返回值表示调控光标是否成功;
*boolean lase(): 把光标放到最后一行的位置上
*boolean isBeforeFirst(): 当前光标位置是否是在第一行前面;
*boolean isAfterLast(): 当前光标位置是否在最后一行的后面;
*boolean isFirst(): 当前光标位置是否在第一行上;
*boolean isLast(): 当前光标位置是否在最后一行上;
*boolean previous(): 把光标向上挪一行;
*boolean next(): 把光标向下挪一行;
*boolean relative(int row): 相对位移,当row为正数时,表示向下移动row行,为负数时表示向上移动row行;
*boolean absolute(int row) : 绝对位移,把光标移动到指定的行上;
*int getRow();返回当前光标所有行。
操作列:
*Xxx getXxx(int colIndex): 通过列编号获取数据
*Xxx getXxx(String colName) : 通过列名获取数据
获取结果集元数据(获取结果集的列数、获取指定列的名称)
*得到结果集元素数据对象:ResultSetMetaData rsmd = rs.getMetaData();
>String getColumnName(int column): 通过指定列的编号,获取列名称
>int getColumnCount(): 获取总列数