CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

将文件写入SQL Server数据库怎么写啊?

楼主wspdelphi()2006-07-02 14:23:02 在 Java / Web 开发 提问

我初学java,研究jsp,不懂请大侠赐教。vc、delphi、c#都很简单。可java把我难住了,看了好几本书,都没有。有的说用:jspSmartUpload组件,晕菜。 问题点数:100、回复次数:28Top

1 楼haisenmai(我应该做得到)回复于 2006-07-02 14:37:31 得分 0

upTop

2 楼trumplet(检查)回复于 2006-07-02 14:54:25 得分 0

写入数据库,用JDBC  
   
  jspSmartUpload是用于文件上传Top

3 楼luoshi1982(學習)回复于 2006-07-02 16:34:06 得分 0

oracle   jdbc在哪裡有下給個鏈接Top

4 楼wspdelphi()回复于 2006-07-02 16:59:13 得分 0

to   trumplet(检查)   :jspSmartUpload中有将文件上传到数据库的功能。  
  能给我个例子吗?先谢了。难道这种在其他语言中,包括.net都很简单的问题,在java中就这么复杂?还是大家不屑于我这个菜鸟啊。大家帮忙啊。Top

5 楼trumplet(检查)回复于 2006-07-02 17:14:51 得分 0

用jspSmartUpload,是上传到服务器,上传后放到哪里,还要另外处理。可以把它存为磁盘文件,也可以另做他用。  
   
  oracle的JDBC驱动器,如果安装了oracle,可以找到ojdbc14.jar,就是这个了。Top

6 楼zebra007(呼呼)回复于 2006-07-02 17:37:25 得分 0

http://www.knowsky.com/3136.html  
  jspSmartUpload上传下载全攻略Top

7 楼tomison()回复于 2006-07-02 18:20:46 得分 0

得用I/O,先将文件的信息读入缓冲区,再从缓冲区中写入数据库Top

8 楼luoshi1982(學習)回复于 2006-07-02 18:55:35 得分 0

trumplet(检查),   我安裝了oracle,但是搜索不到ojdbc14.jar,我安裝的是oracle   9.0的,只在C:\ORANT\jdk\lib下找到一個classes.zip,是不是這個?Top

9 楼flymoon(花儿月)回复于 2006-07-02 19:29:26 得分 0

arasrarasdfdasfTop

10 楼FBjq(龙啸天驱)回复于 2006-07-02 23:13:46 得分 0

咦?不是说SQL   SERVER的吗?  
  SQL的可以用JDBC:ODBC桥连接作,建立一个数据源。本来也可以用JDBC驱动,可惜,手头上的这个有问题,连接不成功……Top

11 楼Radar2006(中华英雄)回复于 2006-07-03 08:23:27 得分 0

upTop

12 楼yougucao379548695(郑州-小刘)回复于 2006-07-03 13:13:59 得分 0

哪个上传全攻略看了我的怎么还是不能上传,哪个组件在JB2006的工程里怎么放啊。怎么到处都是错误!55555555555555555Top

13 楼nlhlx(胡)回复于 2006-07-03 14:13:22 得分 0

最简单的方法是:  
  <%@   page   contentType="text/html;   charset=GBK"   %>  
  <%@   taglib   uri="/WEB-INF/newxy-html.tld"   prefix="nhtml"%>  
  <%@   taglib   uri="/WEB-INF/newxy-logic.tld"   prefix="nlogic"%>  
   
  <nlogic:action1   id="act1"   formName="fileForm"/>  
  <nhtml:form   action=""   formName="fileForm"   enctype="multipart/form-data">  
      <input   type="hidden"   name="_table"   value="table1"/><br   />  
      文件1,不大于1024K:<nhtml:file   property="file1"   size="40"   maxSize="1024"/><br   />  
      文件2,不大于1024K:<nhtml:file   property="file2"   size="40"   maxSize="1024"/><br   />  
  </nhtml:form>  
  <nhtml:button   actionId="act1"   method="update"/>  
   
  表名:table1,两个保存文件的字段:file1,file2  
   
  不写一行java代码。  
   
  参看《文件上传至数据库》:http://www.newxy.net/doc.jsp#anchor15.2  
   
  可参见文件上传范例:   http://www.newxy.net/zh_cn/samples/sample2/demo.jsp    
  也可下载范例。  
  Top

14 楼wspdelphi()回复于 2006-07-03 16:46:24 得分 0

to   胡立新:你很厉害,可是我不想用什么struts,hibernate等架构,我只想自己组织,哪怕辛苦,维护很累,但是我自己可以学习东西。因我现在正处在java知识学习期。  
  大侠们在这里说了一大堆数据连接,真是晕乎。我要的是将文件写入数据库(SQl   Server)的image字段即blob字段中。Top

15 楼wspdelphi()回复于 2006-07-03 16:49:15 得分 0

数据库连接上后,写非binary类型blob的很是简单,也可以靠sql语句。但是文件写入blob我   就头大了,没有思路。给个例子吧。Top

16 楼LBN1012(星空)回复于 2006-07-03 21:47:18 得分 0

将文件读成字节流,然后写进大对象。  
  或者将文件的路径存入数据库,用的时候将路径读出来,在用java   IO去操作文件Top

17 楼Sunny319(努力学习java中.)回复于 2006-07-03 22:03:24 得分 0

顶LBN1012(星空),说得很对!Top

18 楼zhl0369(T_stone)回复于 2006-07-04 09:54:22 得分 0

//操作时需要使用oracle的JDBC包,本例使用了oracle\ora92\jdbc\libOJDBC14.JAR  
  //注意:更新时一定要使用   FOR   UPDATE   锁定含有LOB值的行  
   
  //用标签处理程序来定义客户标签的工作    
   
  import   java.io.File;  
  import   java.io.FileInputStream;  
  import   java.io.FileOutputStream;  
  import   java.io.InputStream;  
  import   java.io.OutputStream;  
  import   java.sql.Connection;  
  import   java.sql.DriverManager;  
  import   java.sql.ResultSet;  
  import   java.sql.SQLException;  
  import   java.sql.Statement;  
   
  import   oracle.jdbc.OracleResultSet;   //   使用Oracle的ResultSet对象  
  import   oracle.sql.BLOB;   //   使用Oracle的BLOB对象,而不是sun的Blob  
   
  //实现TagSupport或BodyTagSupport接口    
  public   class   ORACLE_BLOB   {  
  public   static   void   main(String[]   args)   {  
   
  String   dbUrl   =   "jdbc:oracle:thin:@192.168.0.82:1521:zhl";  
  Connection   conn   =   null;  
   
  try   {  
   
  Class.forName("oracle.jdbc.driver.OracleDriver");  
  conn   =   DriverManager.getConnection(dbUrl,   "zhl",   "zhl");  
  File   fileIn   =   new   File("c:\\a.gif");  
  File   fileOut   =   new   File("c:\\b.gif");  
  conn.setAutoCommit(false);   //   取消Connection对象的auto   commit属性  
  String   file_name   =   fileIn.getName();  
   
  //   数据库中有一个item表,其中的file_name   (varchar2)存储文件名,file_blob  
  //   (blob)存储文件对象  
  String   sql   =   "INSERT   INTO   item   (file_name,file_blob)   VALUES   ('"  
  +   file_name   +   "',EMPTY_BLOB())";   //   使用“EMPTY_BLOB()“成生一个空blob  
  Statement   stmt   =   conn.createStatement();  
  int   count   =   stmt.executeUpdate(sql);  
   
  sql   =   "SELECT   file_blob   FROM   item   WHERE   file_name='"   +   file_name  
  +   "'   FOR   UPDATE";   //   使用“FOR  
  //   UPDATE”得到表的写锁  
  ResultSet   rs   =   stmt.executeQuery(sql);  
  rs.next();  
  BLOB   blob   =   ((OracleResultSet)   rs).getBLOB("file_blob");   //   得到BLOB对象  
  OutputStream   out   =   blob.getBinaryOutputStream();   //   建立输出流  
  InputStream   in   =   new   FileInputStream(fileIn);   //   建立输入流  
  int   size   =   blob.getBufferSize();  
  byte[]   buffer   =   new   byte[size];   //   建立缓冲区  
  int   len;  
  while   ((len   =   in.read(buffer))   !=   -1)  
  out.write(buffer,   0,   len);  
  in.close();  
  out.close();  
  conn.commit();  
   
   
  //输出到fileOut  
  sql   =   "SELECT   file_blob   FROM   item   WHERE   file_name='"   +   file_name  
  +   "'";  
  rs   =   stmt.executeQuery(sql);  
  rs.next();  
  blob   =   ((OracleResultSet)   rs).getBLOB("file_blob");   //   得到BLOB对象  
  in   =   blob.getBinaryStream();  
  out   =   new   FileOutputStream(fileOut);  
  size   =   blob.getBufferSize();  
  System.out.println(blob.length());  
  buffer   =   new   byte[size];   //   建立缓冲区  
  while   ((len   =   in.read(buffer))   !=   -1)  
  out.write(buffer,   0,   len);  
  in.close();  
  out.close();  
  conn.commit();  
   
  }   catch   (Exception   ex)   {  
  ex.printStackTrace();  
  try   {  
  conn.rollback();  
  }   catch   (SQLException   sqle)   {  
  System.err.println(sqle.getMessage());  
  }  
  }  
   
  }  
  }Top

19 楼zhl0369(T_stone)回复于 2006-07-04 09:58:01 得分 0

代码有点乱,可以看这个  
  http://blog.csdn.net/zhl0369/archive/2006/06/16/802703.aspxTop

20 楼yougucao379548695(郑州-小刘)回复于 2006-07-04 10:01:05 得分 0

谁发给我哪个组件SmartUpload上传下载组件  
  luiguangshui@163.com  
  379548695我的QQTop

21 楼shanshuiboy()回复于 2006-07-04 10:08:28 得分 0

在百度搜SmartUpload,有很多Top

22 楼zhl0369(T_stone)回复于 2006-07-04 10:12:16 得分 0

yougucao379548695()    
   
  收邮件Top

23 楼wspdelphi()回复于 2006-07-05 15:28:20 得分 0

我写过一个文件报送的就是将文件的路径存入数据库,用的时候将路径读出来,在用java   IO去操作文件的,可是现在我想把它放到sql   server数据库中。真是困难啊。因为文件很小,放到数据库中好维护,放到硬盘上麻烦多多啊。还有病毒,^_^Top

24 楼sdxlh007(海)回复于 2006-07-05 15:31:35 得分 0

用io流,把文件读出来,要用的时候创建空文件,再把保存的信息读取到文件中Top

25 楼wspdelphi()回复于 2006-07-05 15:35:39 得分 0

to   sdxlh007(海)   :给个存取例子吧Top

26 楼sdxlh007(海)回复于 2006-07-05 16:02:31 得分 0

String   tmp="";//用于接收文件的内容  
  File   FileDir;  
   
   
  public   boolean   FileOpen()   {//打开文件的方法  
  File   file   =   文件的路径;  
  FileDir   =   file;    
  StringBuffer   sb   =   new   StringBuffer();  
      try   {  
          FileReader   fr   =   new   FileReader(file);  
          int   i;  
          do   {  
              i   =   fr.read();    
              if(i==-1){  
              }else{  
                      sb.append((char)   i);  
              }  
          }   while   (i   !=   -1);    
          fr.close();    
      }   catch   (Exception   ee)   {  
          ee.printStackTrace();  
  }  
  tmp=sb.toString());  
  return   true;  
  }  
   
  public   boolean   FileSevas()   {   //生成文件  
      File   file   =   获得要生成文件的文件的路径  
      try   {  
          file.createNewFile();  
          FileOutputStream   fos2   =   new   FileOutputStream(file);  
          String   strTmp   =   数据库读出来的内容  
          fos2.write(strTmp.getBytes());    
          fos2.flush();  
          fos2.close();  
      }   catch   (Exception   ex)   {  
          ex.printStackTrace();  
      }  
      return   true;  
  }Top

27 楼sdxlh007(海)回复于 2006-07-05 16:03:31 得分 0

tmp=sb.toString());  
  多了一个),要改  
  tmp=sb.toString();Top

28 楼wspdelphi()回复于 2006-07-05 18:36:01 得分 0

to   sdxlh007(海)   :明白你的意思了,唉看来我的思维还没有从其他语言转变过来,单纯想的是硬生生将文件通过java提供的函数放到blob字段中。一切都得靠自己。谢谢Top

相关问题

关键词

得分解答快速导航

  • 帖主:wspdelphi

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo