转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> Sql Server >> 正文
JSP中SQL数据库编程技术         

JSP中SQL数据库编程技术

作者:闵涛 文章来源:闵涛的学习笔记 点击数:2868 更新时间:2007/11/14 13:08:29
bsp;                  int getInt()
  BIGINT                       Long                                             long getLong()
  REAL                         Float                                              float getFloat()
  FLOAT                       Double                                          double getDouble()
  DOUBLE                   Double                                          double getDouble()
  BINARY                     byte[]                                              byte[] getBytes()
  VARBINARY              byte[]                                              byte[] getBytes()
  LONGVARBINARY   byte[]                                              InputStream getBinaryStream()
  DATE                          java.sql.Date                               java.sql.Date getDate()
  TIME                           java.sql.Time                               java.sql.Time getTime()
  TIMESTAMP              java.sql.Timestamp                   java.sql.Timestamp getTimestamp()
  
 3,null
  int i=rs.getInt("age");
  if(!rs.wasNull())....//RecordSet::wasNull()用来检查null
 4,存取大字符串和二进制文本
  对于数据库中longvarchar和langvarbinary进行流操作
  ResultSet rs=stmt.executeQueryString("select ...");
  BufferedReader br=new BufferedReader(new InputStream(rs.getAsciiStream("vol1")));//长文本串
  BufferedReader br=new BufferedReader(new InputStream(rs.getUnicodeStream("vol1")));
  BufferedReader br=new BufferedReader(new InputStream(rs.getBinaryStream("vol2")));//长二进制文本
  //取数据必须在rs.getAsciiStream(), rs.getUnicodeStream(), rs.getBinaryStream()等之后马上进行


五,浏览ResultSet
 1,JDBC2.0提供了更多浏览ResultSet的方法
  首先,确定你的jdbc驱动程序支持jdbc2.0
  其次,由Connection生成Statement时要指定参数
  Statement stmt=con.getStatement("游标类型", "记录更新权限");
   游标类型:
    ResultSet.TYPE_FORWORD_ONLY:只可以向前移动
    ResultSet.TYPE_SCROLL_INSENSITIVE:可卷动。但是不受其他用户对数据库更改的影响。
    ResultSet.TYPE_SCROLL_SENSITIVE:可卷动。当其他用户更改数据库时这个记录也会改变。
   记录更新权限:
    ResultSet.CONCUR_READ_ONLY,只读
    ResultSet.CONCUR_UPDATABLE,可更新
    
  getStatement()缺省参数:getStatement(ResultSet.TYPE_FORWORD_ONLY, ResultSet.CONCUR_READ_ONLY)
 2,如果ResultSet是可卷动的,以下函数可以使用:
  rs.absolute()//绝对位置,负数表示从后面数
  rs.first()第一条
  rs.last()最后一条
  rs.previoust()前一条
  rs.next()后一条
  rs.beforeFirst()第一条之前
  rs.afterLast()最后之后
  rs.isFirst(),rs.isLast(),rs.isBeforeFirst(),rs.isAfterLast
 注意,刚打开的时候是处于第一条记录之前的
 
六,更新数据库
 1,stmt.executeUpdate("strSql"),strSql是一条sql更新语句。update,insert,delete返回影响到的条数
 2,stmt.execute()方法在不知道sql语句是查询还是更新的时候用。如果产生一条以上的对象时,返回true,此时可用stmt.getResultSet()和stmt.getUpdateCount()来获取execute结果,如果不返回ResultSet对象则返回false.
 3,除了Statement的executeUpdate之外还可以用ResultSet:
  rs.updateInt(1,10);
  rs.updateString(2,"sfafd");
  rs.updateRow();
  
七,使用预编译PreparedStatement
 PreparedStatement对象和Statement对象类似,都可以用来执行SQL语句。不同在于,数据库会对PreparedStatement的SQL语句进行预编译,而且仍旧能输入参数并重复执行编译好的查询速度比未编译的要快。
 PreparedStatement stmt=con.preparedStatement("Insert Into users(userid, username) values(?,?)");
 stmt.clearParameters();
 stmt.setInt(1,2);
 stmt.setString(2,"Big");
 stmt.executeUpdate();

八,执行存储过程
 1,JDBC调用存储过程,并使用存储过程的返回值。这样可以将处理工作分为服务端和客户端两部分,并大大加快系统的设计和开发的时间。比如可以重复使用服务器上的组件。使用存储过程之后大量诸计算工作可以交给数据库服务器来处理,这将降低Web服务器的负载,从而提高整个系统的性能。
 2,有两个表UserMain{UserID,UserName,UserType},UserRef{BrefID, UserID, UserBrief}
  下面的存储过程可以接受jdbc传来的参数,新增内容到UserMain和UserRef,并输出一个OutUserID.
  CREATE PROCEDURE ap_adduser
  (
  @OutUserID int output, //此为输出参数,output标记
  @UserName varchar(25), //参数表示方法:"@XXX"为变量名,"变量名 类型 [output]"
  @UserType tinyint,
  @UserBrief varchar(255),
  )
  AS
  Declare @UserID int //定义局部变量
  insert into UserMain(UserName, UserType) 
  values(@UserName,@UserType)
  select @UserID=@@IDENTITY //赋值用select,此处自动获得ID
  insert into UserRef(UserID, UserBrief)
  select @OutUserID=@UserID
  GO/*结束,基本结构:
   CREATE PROCEDURE procedureName(
    paramet

上一页  [1] [2] [3]  下一页


[Access]sql随机抽取记录  [Access]ASP&SQL让select查询结果随机排序的实现方法
[办公软件]在sybase中插入图片、PDF、文本文件  [办公软件]安装Sybase ASE
[办公软件]linux指令大全(完整篇)  [办公软件]Linux新手入门常用命令大全
[办公软件]在RedHat Linux 9里安装gaim0.80  [办公软件]浅谈Linux 下Java 1.5 汉字方块问题解决方法
[办公软件]Linux程序员必读:中文化与GB18030标准  [办公软件]linux指令大全
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台