sql server 增加 讀取binary欄位
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();
{
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