J2EE 7.JSP中使用数据库

加载JDBC-数据库驱动程序

mysql-connector-java-5.1.28-bin.jar文件就是连接MySQL数据库的JDBC-数据库驱动程序。将该驱动程序复制到Tomcat服务器所使用的JDK的扩展目录中(即java_home环境变量指定的JDK),比如:D:\jdk1.7\jre\lib\ext

或复制到Tomcat服务器安装目录的

\common\lib文件夹中,比如:

D:\apache-tomcat-8.0.3\common\lib

 

Java查不出来可以用SQL的命令行查试试

 

加载MySQL的JDBC-数据库驱动程序代码如下:

try{                  

    Class.forName("com.mysql.jdbc.Driver");

}

catch(Exception e){}

建立连接:

try{  String uri = "jdbc:mysql:// 192.168.100.1:3306/warehouse";

       String user ="root";

       String password ="99";

       con = DriverManager.getConnection(uri,user,password);

   }

catch(SQLException e){

      System.out.println(e);

}

中文乱码

URI 是统一资源标识符,而 URL 是统一资源定位符。每个 URL 都是 URI,但不一定每个 URI 都是 URL。因为 URI 还包括一个子类,即统一资源名称 (URN)。URL是URI的一个特例,它包含了定位Web资源的足够信息

避免操作数据库出现中文乱码(细节见稍后的7.3.3),那么需要使用   Connection getConnection(String) 方法建立连接,连接代码是(假设用户是root,其密码是99):

String uri =

     "jdbc:mysql://127.0.0.1/warehouse?"+

      "user=root&password=99&characterEncoding=gb2312";

con = DriverManager.getConnection(uri);

数据库和表使用支持中文的字符编码

    在创建数据库时指定数据库使用的字符编码:

create people CHARACTER SET gb2312

查询记录

JDBC和数据库表进行交互的主要方式是使用SQL语句

ResultSet rs=sql.executeQuery(“”);

ResultSet结果集一次只能看到一个数据行,使用next()方法走到下一数据行,获得一行数据后,ResultSet结果集可以使用getXxx方法获得字段值(列值),将位置索引(第一列使用1,第二列使用2等等)或列名传递给getXxx方法的参数即可

更新、添加与删除记录     

Statement对象调用方法:

public int executeUpdate(String sqlStatement);

用结果集操作数据库中的表

ResultSet结果集对底层数据库表进行更新和插入操作(这些操作由系统自动转化为相应的SQL语句)

更新:

使用结果集更新数据库表中第n行记录中某列的值的步骤是:

1.结果集rs的游标移动到第n行

           rs.absolute(n);

2.结果集将第n行的某列的列值更新

例如  更新列名是columnName的日期值是x指定的值:

         updateDate(String columnName, Date x)

3.更新数据库中的表

最后,结果集调用updateRow()方法用结果集中的第n行更新数据库表中的第n行记录。

插入:

使用结果集向数据库表中插入(添加)一行记录步骤是:

1.结果集rs的游标移动到插入行

           rs.moveToInsertRow();

2.更新插入行的列值

 例如:

rs.updateString(1, "c002");

rs.updateString(2, "IBM iPad");

rs.updateDate(3,Date());

rs.updateDouble(4, 5356);

3. 插入记录

最后,结果集调用insertRow()方法用结果集中的插入行向数据库表中插入一行新记录。

预处理语句

PreparedStatement对象,该对象被习惯地称作预处理语句对象

  Connection连接对象con调用prepareStatement(String sql)方法:

PreparedStatement pre=con.prepareStatement(String sql);

预处理语句设置通配符“?”的值的常用方法有:

void setDate(int parameterIndex,Date x)

void setDouble(int parameterIndex,double x)

void setFloat(int parameterIndex,float x)

在对SQL进行预处理时可以使用通配符“?”来代替字段的值。例如:

prepareStatement pre=

con.prepareStatement("SELECT * FROM product WHERE price < ? ");

事务

事务处理步骤如下:

1.连接对象使用setAutoCommit(boolean autoCommit)方法

将参数autoCommit取值为false来关闭自动提交模式:

con.setAutoCommit(false);

2.commit()方法

     con调用commit()方法就是让事务中的SQL语句全部生效。

3.rollback()方法

     只要事务中任何一个SQL语句没有生效,就抛出SQLException异常。在处理SQLException异常时,必须让con调用rollback()方法,其作用是撤消事务中成功执行过的SQL语句对数据库数据所做的更新、插入或删除操作.

分页显示记录

可以使用二维数组table存放表的记录,即用二维数组table中的行(一维数组table[i])存放一条记录。

假设table存放了m行记录,准备每页显示n行,那么,总页数的计算公式:

如果m除以n的余数大于0,总页数等于m除以n的商加1;

如果m除以n的余数等于0,总页数等于m除以n的商。

        总页数=(m%n)==0?(m/n):(m/n+1);

    如果准备显示第p页的内容,应当从tablel第

            (p-1)*n

行开始,连续输出n行(最后一页可能不足n行)。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值