然而, 並不能
使用INSERT或者UPDATE進行保存文件到資料庫的時候, 就是簡單粗暴的把文件內容寫在語句里, 文本的話就是文本而已, 二進制的文件是用16進製表示的一大串數據
所以, 對於非文本文件, 你要得到的是這個文件的16進製表示數據, 然後寫在SQL語句中就行了, 比如:
UPDATE 表 SET [Content]=0x89504E470D0A1A0........ WHERE 條件
❷ sql資料庫中包含哪幾種文件
sql資料庫中包含主數據文件、事務日誌文件、輔助數據文件三種文件。
1、主數據文件
該文件包含資料庫的啟動信息,並用於存儲數據。每個資料庫都有一個主要數據文件。
2、事務日誌文件
這些文件包含用於恢復資料庫的日誌雹豎信息。每個資料庫都必須至少有一個日誌文件。
3、輔助數據文件
這些文件含有不能置於主要數據文件中的所有數據。如果主文件可以包含資料庫中的所有數據,那麼資料庫就不需要次要數據文件。
(2)sql資料庫存儲文檔擴展閱讀
sql資料庫特點
1、SQL資料庫的數據體系結構基本正肆唯上是三級結構,但使用術語與傳統關系模型術語不同。在SQL中,關系模式(模式)稱為「基本表」(basetable);存儲模式(內模式)稱舉培為「存儲文件」(storedfile);子模式(外模式)稱為「視圖」(view);元組稱為「行」(row);屬性稱為「列」(column)。
2、sql資料庫是非過程化語言、統一的語言、是所有關系型資料庫的公共語言。
3、SQL用戶可以是應用程序,也可以是終端用戶。SQL語句可嵌入在宿主語言的程序中使用,宿主語言有FORTRAN,COBOL,PASCAL,PL/I,C和Ada語言等。SQL用戶也能作為獨立的用戶介面,供交互環境下的終端用戶使用。
❸ SQL資料庫中都是以表的形式存儲數據的嗎
SQLSERVER資料庫中數據存儲:
一:存儲文件類型
SQLSERVER有兩種數據存儲文件,分別是數據文件和日誌文件。
其中:數據文件是以8K(=8192Byte)的頁面(Page)作為存儲單元的。
而日誌文件是以日誌記錄作為存儲單元。本文只討論數據文件的存儲方式,不涉及到日誌文件存儲方式。
數據文件以頁面做為存儲單元存儲數據,要理解數據文件的存儲方式,必須了解SQLSERVER中定義的頁面類型種類。
二:頁面類型
SQLSERVER中頁面類型有8種,具體每種類型的詳細說明,見下圖:
用戶的數據一般存放在數據頁面中,由上圖可以看出,數據頁包含數據行中除 text、ntext 和 image 數據外的所有數據,text、ntext 和 image 數據存儲在單獨的頁中。那麼在一個數據頁面中,數據是如何存放,SQLSERVER又是根據什麼來定位頁面與頁面上的數據呢。要回答這個問題,有必要先了解數據頁面的具體結構。
三:數據頁面結構
在數據頁上,數據行緊接著頁首按順序放置。在頁尾有一個行偏移表。在行偏移表中,頁上的每一行都有一個條目,每個條目記錄那一行的第一個位元組與頁首的距離。行偏移表中的條目序列與頁中行的序列相反。數據頁面結構如下圖所示,下面將詳細解釋
其中:數據頁面頁首:96個位元組,保存著頁面的系統信息,如頁的類型、頁的可用空間量、擁有頁的對象的對象 ID 以及該頁面所屬於哪個物理文件。
數據區:對應於上圖中所有數據行的總區域,存放真正的數據,是以Slot為單位。一個Slot就是對應於一條數據記錄行,從0開始編號,以16進制反序保存,Slot0,Slot1....。
行偏移數組:用於記錄該數據頁面中每個Slot在數據頁面所處的相對位置,便於定位和檢索每個Slot在數據頁面中的位置,數組中每個記錄占兩個位元組。
四:存儲分配單位:盤區(擴展 Extend)
雖然SQLSERVER中數據文件存儲單位是頁面(Page),但實際SQLSERVE並不是為頁面為單位給數據分配空間,SQLSERVER默認的存儲分配單位是盤區。這樣做的主要原因是為了提高性能。為了避免頻繁的讀寫IO,在表或其它對象分配存儲空間,不是直接分配一個8K的頁面,而是以一個盤區(Extend)為存儲分配單位,一個盤區為8個頁面(=8*8K=64K)。
但是這樣做雖然減少了頻繁的IO讀寫,提高的資料庫性能,但卻導致出一個新問題,那就是在存儲那些只有少量數據,不足8K的對象,如果也是分配給一個盤區,就會存在存儲空間上的浪費,降低了空間分配效率。
為解決上述問題,SQLSERVER提供了一種解決方案,定義了兩種盤區類型,統一盤區和混合盤區。
其中:統一盤區只能存放同一個對象,該對象擁有這個盤區的所有頁面
混合盤區:由多個對象共同擁有該盤區。
在實際為對象分配存儲盤區時,為了提高空間利用率,默認的情況下,如果一個對象一開始大小小於8個頁面,就盡量放在混合盤區中,如果該對象大小增加到8個頁面後,SQLSERVER會為這個對象重新分配一個統一盤區。
為了能夠通過上述策略來實現為對象分配存儲盤區,SQLSERVER提供了GAM/SGAM機制來管理和維護數據文件的盤區信息。
❹ 資料庫怎麼保存文件
問題一:請教如何將文件存儲到資料庫中? 將文件保存到資料庫中,實際上是將文件轉換成二進制流後,將二進制流保存到資料庫相應的欄位中。在SQL Server中該欄位的數據類型是Image,在Access中該欄位的數據類型是OLE對象。保存文件到SQL Server資料庫中FileInfo fi=new FileInfo(fileName);FileStream fs=fi.OpenRead();byte[] bytes=new byte[fs.Length];fs.Read(bytes,0,Convert.ToInt32(fs.Length));Sqlmand cm=new Sqlmand();cm.Connection=;cm.mandType=mandType.Text;if(.State==0) .Open();cm.mandText=insert into +tableName+(+fieldName+) values(@file);SqlParameter spFile=new SqlParameter(@file,SqlDbType.Image);spFile.Value=bytes;cm.Parameters.Add(spFile);cm.ExecuteNonQuery()保存文件到Access資料庫中FileInfo fi=new FileInfo(fileName);FileStream fs=fi.OpenRead();byte[] bytes=new byte[fs.Length];fs.Read(bytes,0,Convert.ToInt32(fs.Length));OleDbmand cm=new OleDbmand();
問題二:如何保存sql資料庫 右鍵資料庫,屬性,查看資料庫路徑,如圖
停止服務管理器,然後拷出來就行了
問題三:資料庫文件怎樣保存到壓縮包里 資料庫嫌橋跡設計二進制欄位就可以了,讀取文件,寫入資料庫就行了
問題四:資料庫文件的默認存放位置? 很長,一時間想不起來
不過你可以先創建一個默認的資料庫
然後點擊資料庫屬性,裡面有路徑
把它復制到文件夾地址就行了
希望對你能有所幫助
問題五:資料庫怎麼存儲文件 以二進制的方式處理。
如果使用 SQLServer 資料庫,創建 varbinary(max) 類型的欄位。
如果使用 Oracle 資料庫,創建 blog 類型的欄位。
問題六:sql資料庫如何導出? 使用Discuz! X1.5自帶的導出功能
問題七:如何像資料庫中保存圖片? 一般消旅圖像是不保存在資料庫的.而是先將圖片放在工程下的某個文件夾中,將圖片所在的工程文件路徑存在資料庫中,當程序載入圖片的時候,從資料庫中讀取圖片的路徑,然後根據路徑在工程的文件夾中讀取圖片文件
問題八:如何用SQL資料庫存放視頻 用iamge類型,寫入的時間用流寫入,讀出的時間同樣需要流轉換
問題九:sql 存儲過程怎樣保存 greate 應該是CREATE
use tbuser
go
Create procere search_login
@username varchar(50),@userpass varchar(50)
as
BEGIN
select * from tbuser where [email protected] and [email protected]
END
只要點執行就存在伺服器里了
保存本地,直接點保存就行了。
問題十:如何將資料庫導出成sql文件 您好,很高興為您解答。
1、打開SQL Server Management Studio 2008 ,連接到資料庫伺服器,展開對象資源管理器到資料庫節點
2、選擇需要將數據導出到腳芹並本的資料庫,將包含所有的存儲過程,表,視圖,表裡的數據等等。
3、右擊選中的數據,按照以下路徑選擇生成腳本向導 :AdventureWorks -〉任務 -〉生成腳本
4、當點擊生成腳本,彈出一個向導--生成資料庫對象腳本。
5、下一步到達設置腳本編寫選項,進入高級設置對話框,關鍵是要編寫腳本的數據類型這里,默認是僅限架構,選擇架構和數據或者是數據都可以吧數據導成腳本
執行完就可以看到結果了
如若滿意,請點擊右側【採納答案】,如若還有問題,請點擊【追問】
希望我的回答對您有所幫助,望採納!
~ O(∩_∩)O~
❺ sql資料庫文件存放在哪
如果是 sql2005的話
後綴為 .mdf 或 .ldf 的 你可以選擇 資料庫右鍵的屬性找到文件組路徑
❻ SQL資料庫文件的最大容量是多少
SQLSERVER2000技術規格
--------------系統技術規格---------------
--每個伺服器最多可以允許16個SQLSERVER實例
--每個實例可擁有2147483467個鎖
--------------資料庫技術規格--------------
--SQLSERVER的資料庫大小1048516TB
--每個資料庫可擁有的文件組數32767
--每個資料庫可擁有的文件組數256
--文件大小(數據文件)32TB---
--文件大小(日誌文件)32TB---
--資料庫中的對象數2147483647
--標識符的長度128
--------------表技術規格-------------------
--每個資料庫中可擁有的表數受限於資料庫中的對象數
--每個表可擁有的行數受限於可用的存儲容量
--每個表的主鍵約束數1
--每個表的外鍵約束數253
--每個表的引用數253
--每個表的觸發器數受限於資料庫中的對象數
--每個表的簇索引數1
--每個表的非簇索引數249
--每個表的唯一約束249非簇的,1成簇的
--------------列技術規格-------------------
--每個索引可包含的列數16
--每個主鍵可包含的列數16
--每個外鍵可包含的列數16
--每個表的列數1024
--索引鍵的大小900位元組
--每個character或binary列的位元組數8000
--每個text,ntext或image列的位元組數2GB-2
--每行的位元組數8060
--每個索引的位元組數900
--每個主鍵的位元組數900
--每個外鍵的位元組數900
--------------SQL技術規格-------------------
--批處理大小65536乘以網路包大小
--每個SELECT語句可處理的表數256
--存儲過程源文件的位元組數小於批處理大小或250MB
--每個存儲過程的參數數目1024
--嵌套的子查詢數32
--嵌套的觸發器層數32
--每個SELECT語句可處理的列數4096
--每個INSERT語句可處理的列數1024
❼ sql資料庫文件存放在哪(sql保存的文件在哪)
如果是sql2005的話
後綴為.mdf或.ldf的你可以源爛差選擇資料庫右鍵的屬性找雹皮到文歷銀件組路徑
❽ C# sql資料庫中word文檔的保存和讀取
在Sql
Server中存儲、讀寫Word文件,需要將指定表欄位添加為Image類型,示例表結構為:
1
CREATE
TABLE
CONTRACTS
(
2
ID
VARCHAR
(50),
3
CONTRACT_FILE
IMAGE
4
);
CONTRACT_FILE欄位就是要存儲Word文件的欄位,在存儲前,有一個小插曲,你需要將Word文件轉換為byte數組,可參考以下代碼實現:
1
//將文件轉換為byte數組
2
public
static
byte[]
File2Bytes(string
fileName)
3
{
4
FileStream
fs
=
new
FileStream(fileName,FileMode.OpenOrCreate,
FileAccess.Read);
5
byte[]
fileDatas
=
new
byte[fs.Length];
6
fs.Read(fileDatas,
0,
System.Convert.ToInt32(fs.Length));
7
fs.Close();
8
return
fileDatas;
9
}
接下來就是將轉換後的byte[]數組存儲到SqlServer的對應欄位中,具體實現代碼可看如下代碼段:
01
//將文件存儲到資料庫
02
public
bool
UpdateContractFile(string
id,
byte[]
fileBytes)
03
{
04
string
sql
=
"UPDATE
CONTRACTS
SET
CONTRACT_FILE=@CONTRACT_FILE
WHERE
ID=@ID";
05
using
(SqlConnection
conn
=
new
SqlConnection(this.m_DataAccess.ConnectString))
06
{
07
conn.Open();
08
using
(SqlCommand
cmd
=
new
SqlCommand())
09
{
10
cmd.Connection
=
conn;
11
cmd.CommandText
=
sql;
12
cmd.Parameters.Clear();
13
cmd.Parameters.Add(new
SqlParameter("@CONTRACT_FILE",
SqlDbType.Image));
14
cmd.Parameters["@CONTRACT_FILE"].Value
=
fileBytes;
15
cmd.Parameters.Add(new
SqlParameter("@ID",
SqlDbType.VarChar));
16
cmd.Parameters["@ID"].Value
=
id;
17
return
cmd.ExecuteNonQuery()
>
0
?
true
:
false;
18
}
19
}
20
}
同時,因之前轉換了數據類型,所以從資料庫中讀取Word文件時,要先將Image類型的欄位轉換為bytes[],代碼如下:
01
//通過ID獲取文件byte數組
02
public
byte[]
GetContractFile(string
id)
03
{
04
string
sql
=
"SELECT
CONTRACT_FILE
FROM
CONTRACTS
WHERE
ID='{0}'";
05
sql
=
string.Format(sql,
id);
06
object
contractFile;
07
contractFile
=
this.m_DataAccess.ExecuteScalar(sql);
08
if
(contractFile
==
null)
09
{
10
return
new
byte[0];
11
}
12
else
13
{
14
return
(byte[])contractFile;
15
}
16
}
在獲取到文件的byte[]後,將該文件再通過文件流存儲為Word文件,以下代碼可實現此功能:
01
//將byte[]數組存儲為Word文件
02
byte[]
fileBytes
=
this.m_ContractsBusiness.GetContractFile(id);
03
if
(fileBytes.Length
==
0)
04
{
05
XMessageBox.ShowError("未找到合同文件!");
06
return;
07
}
08
SaveFileDialog
sfd
=
new
SaveFileDialog();
09
sfd.Filter
=
"Word文件(*.doc)|*.doc";
10
if
(sfd.ShowDialog()
==
System.Windows.Forms.DialogResult.OK)
11
{
12
try
13
{
14
string
saveFileName
=
sfd.FileName;
15
int
arraysize
=
new
int();
16
arraysize
=
fileBytes.GetUpperBound(0);
17
FileStream
fs
=
new
FileStream(saveFileName,
FileMode.OpenOrCreate,
FileAccess.Write);
18
fs.Write(fileBytes,
0,
arraysize);
19
fs.Close();
20
if
(XMessageBox.ShowQuestion("文件存儲成功,是否立即打開文件?")
==
21
System.Windows.Forms.DialogResult.Yes)
22
{
23
Process.Start(saveFileName);
24
}
25
}
26
catch
(Exception
ex)
27
{
28
XMessageBox.ShowError("操作失敗!");
29
}
上面的幾段代碼只是核心代碼,並不是完整的代碼段,用時候要看清,自己再修改下。
❾ sql資料庫可以存儲word文件嗎
對於msSQL,小格式文件可以轉為二進制當成文本存儲.
但word一般都不小,所以一般情況下都直接保存文件,然後在資料庫中保存地址.對文件的操作由程序進行.
即使oracle這一類有大文件類型的,其實也是通過流來存儲文件,常用於圖像文件,很少於用office類型的.