1. 程式人生 > >在sql server裡怎麼用二進位制存圖片?包括office檔案等等

在sql server裡怎麼用二進位制存圖片?包括office檔案等等

我建了一個表,怎麼把圖片存進去呀?

都說用二進位制存,怎麼存呀?

用byte[]型別存

FileStream fs;
fs = File.OpenRead("c:/1.ico");
byte[] temp = new byte[fs.Length];
int count = (int)fs.Length;
fs.Read(temp,0,count);

//把temp存入資料庫二進位制欄位

bcp處理二進位制檔案參考

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_binaryIO]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[p_binaryIO]
GO

/*--bcp 實現二進位制檔案的匯入匯出

支援image,text,ntext欄位的匯入/匯出
image適合於二進位制檔案,包括:Word文件,Excel文件,圖片,音樂等
text,ntext適合於文字資料檔案

注意:匯入不會新增記錄,所以匯入前要對錶進行初始化,即插入記錄
匯入時,將覆蓋滿足條件的所有行
匯出時,將把所有滿足條件的行匯出到指定檔案中


此儲存過程僅用bcp實現

--鄒建 2003.08(引用請保留此資訊)---*/

/*--呼叫示例
--資料匯出
exec p_binaryIO 'zj','','','acc_演示資料..tb','img','c:/zj1.dat'

--資料匯入
exec p_binaryIO 'zj','','','acc_演示資料..tb','img','c:/zj1.dat','',0
--*/
Create proc p_binaryIO
@servename varchar (30),--伺服器名稱
@username varchar (30), --使用者名稱
@password varchar (30),--密碼
@tbname varchar (500), --資料庫..表名
@fdname varchar (30), --欄位名
@fname varchar (1000),--目錄+檔名,處理過程中要使用/覆蓋:@filename+_temp
@tj varchar (1000)='', --處理條件.對於資料匯入,如果條件中包含@fdname,請指定表名字首
@isout bit=1--1匯出((預設),0匯入
AS
declare @fname_in varchar(1000)--bcp處理應答檔名
,@fsize varchar(20)--要處理的檔案的大小
,@m_tbname varchar(50)--臨時表名
,@sql varchar(8000)

--則取得匯入檔案的大小
if @isout=1
set @fsize='0'
else
begin
create table #tb(可選名 varchar(20),大小 int
,建立日期 varchar(10),建立時間 varchar(20)
,上次寫操作日期 varchar(10),上次寫操作時間 varchar(20)
,上次訪問日期 varchar(10),上次訪問時間 varchar(20),特性 int)
insert into #tb
exec master..xp_getfiledetails @fname
select @fsize=大小 from #tb
drop table #tb
if @fsize is null
begin
print '檔案未找到'
return
end

end

--生成資料處理應答檔案
set @m_tbname='[##temp'+cast(newid() as varchar(40))+']'
set @sql='select * into '[email protected]_tbname+' from(
select null as 型別
union all select 0 as 字首
union all select '[email protected]+' as 長度
union all select null as 結束
union all select null as 格式
) a'
exec(@sql)
select @[email protected]+'_temp'
,@sql='bcp "'[email protected]_tbname+'" out "'[email protected]_in
+'" /S"'[email protected]
+case when isnull(@username,'')='' then ''
else '" /U"'[email protected] end
+'" /P"'+isnull(@password,'')+'" /c'
exec master..xp_cmdshell @sql
--刪除臨時表
set @sql='drop table '[email protected]_tbname
exec(@sql)

if @isout=1
begin
set @sql='bcp "select top 1 '[email protected]+' from '
[email protected]+case isnull(@tj,'') when '' then ''
else ' where '[email protected] end
+'" queryout "'[email protected]
+'" /S"'[email protected]
+case when isnull(@username,'')='' then ''
else '" /U"'[email protected] end
+'" /P"'+isnull(@password,'')
+'" /i"'[email protected]_in+'"'
exec master..xp_cmdshell @sql
end
else
begin
--為資料匯入準備臨時表
set @sql='select top 0 '[email protected]+' into '
[email protected]_tbname+' from ' [email protected]
exec(@sql)

--將資料匯入到臨時表
set @sql='bcp "'[email protected]_tbname+'" in "'[email protected]
+'" /S"'[email protected]
+case when isnull(@username,'')='' then ''
else '" /U"'[email protected] end
+'" /P"'+isnull(@password,'')
+'" /i"'[email protected]_in+'"'
exec master..xp_cmdshell @sql

--將資料匯入到正式表中
set @sql='update '[email protected]
+' set '[email protected]+'=b.'[email protected]
+' from '[email protected]+' a,'
[email protected]_tbname+' b'
+case isnull(@tj,'') when '' then ''
else ' where '[email protected] end
exec(@sql)

--刪除資料處理臨時表
set @sql='drop table '[email protected]_tbname
end

--刪除資料處理應答檔案
set @sql='del '[email protected]_in
exec master..xp_cmdshell @sql
go

用image型別

方法:
1、建立過程
CREATE PROCEDURE sp_textcopy (
@srvname varchar (30),
@login varchar (30),
@password varchar (30),
@dbname varchar (30),
@tbname varchar (30),
@colname varchar (30),
@filename varchar (30),
@whereclause varchar (40),
@direction char(1))
AS
DECLARE @exec_str varchar (255)
SELECT @exec_str =
'textcopy /S ' + @srvname +
' /U ' + @login +
' /P ' + @password +
' /D ' + @dbname +
' /T ' + @tbname +
' /C ' + @colname +
' /W "' + @whereclause +
'" /F ' + @filename +
' /' + @direction
EXEC master..xp_cmdshell @exec_str

2、建表和初始化資料
create table 表名 (編號 int,image列名 image)
go
insert 表名 values(1,0x) -- 必須的,且不是null
insert 表名 values(2,0x) -- 必須的,且不是null
go

3、讀入
sp_textcopy '你的伺服器名','sa','你的密碼','庫名','表名','image列名','c:/圖片.bmp','where 編號=1','I' --注意條件是 編號=1

sp_textcopy '你的伺服器名','sa','你的密碼','庫名','表名','image列名','c:/bb.doc','where 編號=2','I' --注意條件是 編號=2

go

4、讀出成檔案
sp_textcopy '你的伺服器名','sa','你的密碼','庫名','表名','image列名','c:/圖片.bmp','where 編號=1','O' --注意條件是 編號=1

sp_textcopy '你的伺服器名','sa','你的密碼','庫名','表名','image列名','c:/bb.doc','where 編號=2','O' --注意條件是 編號=2
go

如果報textcopy不是可執行檔案的話,你就到
C:/Program Files/Microsoft SQL Server/MSSQL/Binn
目錄下拷備 textcopy.exe到:
C:/Program Files/Microsoft SQL Server/80/Tools/Binn

相關推薦

sql server怎麼二進位制圖片包括office檔案等等

我建了一個表,怎麼把圖片存進去呀? 都說用二進位制存,怎麼存呀? 用byte[]型別存 FileStream fs;fs = File.OpenRead("c:/1.ico");byte[] temp = new byte[fs.Length];int count = (in

Sql ServerCase將多行顯示的資料合併為一行顯示

轉載地址:http://www.cnblogs.com/kingthy/archive/2008/04/29/1175697.html 昨晚在CSDN論壇上看到有某個人問了類似這樣的一個問題,現有三個資料表,分別是學生表,課程表,成績表。它們的結構與樣例資料如下:學生表

SQL Server 2014 聚集列

聚集索引 ash 非聚集索引 修改 rdquo 方式 ins tuple 存儲   SQL Server 自2012以來引入了列存儲的概念,至今2016對列存儲的支持已經是非常友好了。由於我這邊線上環境主要是2014,所以本文是以2014為基礎的SQL Server 的列存

SQL Server不允許保更改的解決方法

sql server不允許保存更改的解決方法設計SQL Server數據庫時,有時會出現不允許保存修改的情況。這是因為啟用了阻止保存要求重新創建表的更改,這是SQL Server的一種保護機制。1修改表的結構,數據類型時,出現的錯誤提示2點擊上面的【工具】→【選項】3在選項對話框中,點擊【設計器】→【表設計器

監控目前所有連接SQL SERVER戶信息

pen http font rom HA open creat DBName 對組 原文:監控目前所有連接SQL SERVER的用戶信息 if object_id(‘p_getlinkinfo‘,‘P‘)is not null drop proc p_getlinkinf

sql server 無法sql server身份驗證

右擊 http 打開 並且 windows 9.png named 安全 登錄名 1)首先,用windows身份驗證進入服務器。 2)其次找到安全性,點擊進入後,找到登錄名為sa,然後右擊屬性。 3)在屬性中找到常規,然後檢查下自己的賬號和密碼,並且在狀

SQL SERVER資源高的SQL語句

stats pan bsp cal select serve sql語句 cpu total --SQL SERVER 占用資源高的SQL語句: --查詢占用cpu高的前 50 個 SQL 語句 SELECT total_cpu_time,[total_physic

SQL Server(七)——儲過程

數據 單獨 進行 tro strong 安全機制 設計 將在 sql語句 一、概述 存儲過程是一組編譯在單個執行計劃中的T-SQL語句 存儲過程:就像函數一樣的會保存在數據庫中(可編程性) 存儲過程的優點: 1、允許模塊化程序設計 2、允許更快執行如果某操作需要大量T-SQ

c++連結SQL serverSQL語句打印表中的記錄,增加表中的記錄,刪除表的欄位

#import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "adoEOF") rename("BOF", "adoBOF") // 唯一的應用程式物件 CWinApp

問題 SQL Server 2008'sa'登入失敗 啟用'sa'登入的辦法

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

SQL SERVER的鎖機制

表鎖 1:TABLOCK(表鎖) 保證其他程序只能讀取而不能修改資料。 select * from t_country  with (TABLOCK) 2:TABLOCKX(排它表鎖) 防止其他程序讀取或修改表中的資料。 select * from t_coun

SQL Server 的資料行結構

感覺關於資料庫的 資料行結構 (data row/record structure) 這方面的內容國內的資料特別少,老師上課講到後,怎麼搜也搜不到,最後還是爬梯|=|子才搜到一些的,這裡對老師上課講的和網上看的做一個小總結。 文章目錄資料行結構行結構總覽行結構補

SQL Server查詢表結構命令

                環境:SQL Server 2008 R2問題:查詢表結構命令       對MySQL和Oracle資料庫熟悉的朋友知道用desc就可以查詢一張表的結構,但是在SQL Server裡執行desc命令會報錯。 desc Student; --關鍵字 'desc' 附近有語法錯誤

解決SQL Serversp_helptext輸出格式錯行問題

use Master go if object_id('SP_SQL') is not null drop proc SP_SQL go /*******************************************************************

SQL Server的閂鎖介紹

在今天的文章裡我想談下SQL Server使用的更高階的,輕量級的同步物件:閂鎖(Latch)。閂鎖是SQL Server儲存引擎使用輕量級同步物件,用來保護多執行緒訪問記憶體內結構。文章的第1部分我會介紹SQL Server裡為什麼需要閂鎖,在第2部分我會給你介紹各個閂鎖型別,還有你如何能對它們進行故障排除

Sql Server 的向上取整、向下取整、四捨五入取整的例項!

==================================================== 【四捨五入取整擷取】 select round(54.56,0) ===================================================

SQL Server 最多可多少列!

SQL   Server   的每個資料庫最多可儲存   20   億個表,每個表可以有   1024   列。表的行數及總大小僅受可用儲存空間的限制。每行最多可以儲存   8,060   位元組。如果建立具有   varchar、nvarchar   或   varbina

SQL Server 2012 JavaJDBC技術連線資料庫並查詢表

try{//必須寫在try_catch語句中 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); String str = "jdbc:

臨時表和表變數區別,SQL Server的檢視和臨時表在哪裡?

臨時表與永久表相似,但臨時表儲存在 tempdb 中,當不再使用時會自動刪除。 臨時表有兩種型別:本地和全域性。它們在名稱、可見性以及可用性上有區別。本地臨時表的名稱以單個數字元號 (#) 打頭;它們僅對當前的使用者連線是可見的;當用戶從 SQL Server 例項斷開連

SQL SERVER@@identity 的用法

@@identity的作用是返回最後插入的標識值,所以有很多朋友使用它來獲取插入資料後的識別符號。但有一點是需要注意的,@@identity返回的是最後的識別符號,所以,要想正確的返回插入後的識別符號,那麼就必須保證,你想要的結果是最後的識別符號,否則就會隱藏bug。仔細閱讀