1. 程式人生 > >sql server 增加 讀取binary欄位

sql server 增加 讀取binary欄位

package com.flyer;
import java.sql.*;
import java.io.*;

publicclass UploadToDB
{  
    String driver
="com.microsoft.jdbc.sqlserver.SQLServerDriver";
    String url
="jdbc:microsoft:sqlserver://localhost:1433;databaseName=fileupload";
    String password
="flyer";
    String userName
="sa";
    
public UploadToDB()
    
{
    }

    
public Connection getConnection()
    
{
        Connection con
=null;
        
try
        
{
            Driver drive
=(Driver)(Class.forName(driver).newInstance());
             System.out.println(drive);
            System.out.println(drive.acceptsURL(url));
            con
=DriverManager.getConnection(url,userName,password);
        }

         
catch(SQLException e)
         
{
             e.printStackTrace();
         }

         
catch(Exception ef)
         
{
             ef.printStackTrace();
         }

         
return con;
    }

    

    
    
publicvoid addFile(String filePath)
    
{
        
        Connection con
=this.getConnection();
        
try
        
{
        
        PreparedStatement pst
=con.prepareStatement("insert into files(wenjian) values(?)");
    
        File file
=new File(filePath);
        
int fileSize=(int)file.length();
        InputStream fin
=new FileInputStream(file);
        
        pst.setBinaryStream(
1,fin,fileSize);
        
        pst.executeUpdate();
        }
catch(FileNotFoundException f){
            f.printStackTrace();
        
        
        }

        
catch(SQLException e)
        
{
            e.printStackTrace();
        }

            
    }

    
publicvoid getFile()
    
{
        Connection con
=this.getConnection();
        
try
        
{
        
        PreparedStatement pst
=con.prepareStatement("select  * from files where id=?");
        
        pst.setInt(
1,2);
        ResultSet rs
=pst.executeQuery();
        
if(rs.next())
        
{
        
        InputStream is
=rs.getBinaryStream(2);
        File file
=new File("d:/a.jpg");
        OutputStream fos
=new FileOutputStream(file);
        
byte[] bytes=newbyte[1024];
         
int by=0;
        
while((by=is.read(bytes))>0)
        
{
        
            fos.write(bytes,
0,by);
            
        }

        is.close();
        fos.close();
        rs.close();
        con.close();
        }

        
else
        
return;
        
        }
catch(FileNotFoundException f){
            f.printStackTrace();
        
        }

        
catch(IOException ff)
        
{
            ff.printStackTrace();
        }

        
catch(SQLException e)
        
{
            e.printStackTrace();
        }
        
    }

    
        
publicstaticvoid main(String[] args)
    
{
        UploadToDB utb
=new UploadToDB();
         utb.getFile();
    
//    utb.addFile("d:/aa.jpg");
    
//    System.out.println(utb.getConnection());
        
    }

    
}

經常看見在QQ群裡  給程式碼。或問題。把檔案放到資料庫中去。上面是SQL Server欄位是IMages . binary也一樣的,們常常這樣做。如果不知道為什麼要把資料放到資料庫,可放到資料庫中有什麼好處。。那上面程式碼就沒有什麼意義了。究竟把檔案放到那兒才合適了,這就要具體考慮到我們的程式應用環境。

放到資料庫中。第一個好處。就是安全。比單純以檔案的形式放在服務上,肯定是不如放在資料庫安全。第二好處。就是系統遷移,比較方便。如果是檔案。特別是檔案多時候。也不知道要copy 到什麼時候。但資料庫中就不一樣。我們要做的就是改一下資料庫連線的URL,其它的什麼都不要動。弊端就是實現複雜一點點。且效能。也不能檔案的形式的快。如。下載這個檔案。。如果直接從資料庫把流輸出到客戶端。那頁面實在是難以控制。所以通常的做法先是在伺服器記取生成這個檔案,又檔案的形式放在伺服器上。然後根據具體應用。下載。或者瀏覽。同時。也產生了問題。當檔案資料更新時。。。那個生成的檔案。就會出同問題。這樣資料就不一致了。在做web應用的時候。圖片的顯示。你會發現。控制比當純給檔案路徑名要複雜。但圖片管理。增修改比較方便。

相關推薦

sql server 增加 讀取binary

package com.flyer;import java.sql.*;import java.io.*;publicclass UploadToDB...{      String driver="com.microsoft.jdbc.sqlserver.SQLServe

SQL Server讀取 表/ 的說明備註資訊

結果程式碼是: 建表後,設定表/欄位的註釋資訊。 下面是 讀取表/欄位 的說明備註 的 SQL 語句。 獲取資料庫表清單: select top 1000    ROW_NUMBER() OVER (ORDER BY a.object_id) AS No,    

sql server怎麼設定ID為自增

①開啟要設定的資料庫表,點選要設定的欄位,比如id,這時下方會出現id的列屬性表 ②列屬性中,通過設定“標識規範”的屬性可以設定欄位自增,將“是標識”的值改為是,即成功設定id欄位為自增欄位 ③注意! 能夠設定ID欄位自增的欄位必須是可自增的,比如int,bigint型別,而varch

SQL-Server-只還原某個

今天工作沒有在狀態,對project表執行update時沒有寫where語句。 update project set extselectitemfield13 = '8a2135646627e8a90166566485045ff8' 還好昨天有做備份,美滋滋。但是問題來了,能不能只還原ext

Sql server 計算某一個值出現的頻數,總數量

  SELECT YZJCYY,count(*) time FROM [dbo].[I_CheckRecordFirst] where YZJCJG='不通過' GROUP BY YZJCYY GO 其中YZJCYY 是要統計的欄位, where 是條件, count(*) t

SQL server 2016 查詢表的註釋

基於sql server2016測試通過,應該通用與SQLserver2005以上版本。 SELECT c.name as columnName, a.VALUE as columnDescript FROM sys.exten

SQL Server修改已有型別,並新增預設約束

    當資料表中存在資料,修改具有預設約束的欄位定義時,需要先刪除已有約束,才能對欄位定義進行修改;而在SQL Server建表時建立的預設約束,其名稱後會自動生成一段隨機碼,因此在刪除時需要找到(在SQL Server Management Studio中選擇表——&g

sql server 新增、查詢 、表註釋

環境:xp sp3,sql server2008 1、sqlserver用語句給表註釋EXECUTE sp_addextendedproperty N'MS_Description', N'表註釋', N'user', N'dbo', N'table', N'表名',

SQL Server中,給設定約束,設定預設值注意事項

使用sql語句給某個欄位設定約束並設定預設值的時候,需要先將原先的約束刪除,然後再新建約束設定預設值,否則報錯。 刪除約束: --找約束名然後 alter table tablenamedrop constraint constratintname; 新建約束,

SQL SERVER中的加密

1, 直接在SQL SERVER下對加密欄位加密     insert into usertable             (username, upassword) values ('new',hashbytes('MD5','123456'));     inse

SQL Server不允許更改屬性

在更改SQL Server2008的表結構的時候,遇到了如圖1所示的問題:不允許更改欄位屬性,解決辦法:開啟SQL SERVER 2008 工具-->選項-->Designers-->表設計器和資料庫設計器,把“阻止儲存要求重新建立表的更改”的勾去掉然後

sql server新增、修改語句(整理)

新增欄位的SQL語句的寫法:通用式: alter table [表名] add [欄位名] 欄位屬性 default 預設值 default 是可選引數增加欄位: alter table [表名] add 欄位名 smallint default 0 增加數字欄位,整型,預設值為0alter table [表

SQL Server中查詢某個中長度最短的一列資料

這個需求在查詢和篩選的時候會用到。我們可以看看下面兩種方法,均可。 至於效率問題自行研究試試。 方法一 SELECT top 1 ROW_ID,SPLIT_NO FROM CD_EMP WHERE

資料庫工作筆記010---Mysql中用SQL增加、刪除,修改名、型別、註釋,調整順序總結

  JAVA技術交流QQ群:170933152   Mysql中用SQL增加、刪除欄位,修改欄位名、欄位型別、註釋,調整欄位順序總結   在網站重構中,通常會進行資料結構的修改,所以新增,刪除,增加mysql表的欄位是難免的,有時為了方便,還會增加

Mysql中用SQL增加、刪除,修改名、型別、註釋,調整順序總結

在網站重構中,通常會進行資料結構的修改,所以新增,刪除,增加mysql表的欄位是難免的,有時為了方便,還會增加修改表或欄位的註釋,把同欄位屬性調整到一塊兒。這些操作可以在phpmyadmin或者別的mysql管理工具中完成,但是我們有時為了更方便的管理,會選擇寫

sql語句的簡單用法 db2刪除修改名,db2一次增加多個

db2不能直接修改欄位名,要先drop刪除欄位名再add新的,如下: alter table TM_APP_FINAL_AUDIT_QUOTA  drop column  graduallyApprovalLevel alter table TM_APP_FINAL_AU

Sql Server 增加字段、修改字段、修改類型、修改默認值

修改字段類型 join where log rename 默認 post bsp con 1、修改字段名:   alter table 表名 rename column A to B 2、修改字段類型:   alter table 表名 alter column 字段名

python3讀取指定,並批量讀入

  #shell指令,批量傳入 cat titleTest*.txt | python3 readFileTest2.py   #讀取傳入檔案指定欄位 #auto=wangshiyu #File=readFileTest2.py import sys for

C#連線sql server讀取表資料

     引入sql客戶端的dll using System.Data; using System.Data.SqlClient; SqlConnection con = new SqlConnection();       &nb

sql 觸發器記錄修改的和值

CREATE TRIGGER dbo.tri_Export_Subsidiary_update    ON  dbo.Export_Subsidiary    AFTER UPDATE    AS  BEGIN     -- SET NOCOUNT ON added to p