在数据库的连接中如果没有用到框架,如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(): 获取总列数