首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

SQL 安插图片 高分求

2012-12-30 
SQL 插入图片 高分求一般方法是 存图片路径 现在需求是插入图片图片数据为接收的BYTE流数据量较大 每秒 10

SQL 插入图片 高分求
一般方法是 存图片路径 
现在需求是插入图片  图片数据为接收的BYTE流
数据量较大 每秒 10张 JPEG图   200KB/张
有什么好的方法 将图片数据插入到数据库中
考虑数据库性能问题

分不够 再给
[解决办法]
如果你非要这样做,可能按照业务来做分区表(2005以后才有)会减轻I/O上的负担。并把分区表分别分开放到物理磁盘,进一步缓解I/O压力。
[解决办法]
另外把数据库恢复模式换成大容量日志(简单也可以,但是正式环境就别用简单了)。前端程序最好预处理一下,在数据库就直接插入,别做太多转换工作。
[解决办法]
单独整个固态硬盘吧 把图片表放这里 应该问题不大。
[解决办法]

USE AdventureWorks2008R2;
GO
CREATE TABLE myTable(FileName nvarchar(60), 
  FileType nvarchar(60), Document varbinary(max));
GO

INSERT INTO myTable(FileName, FileType, Document) 
   SELECT a.jpg' AS FileName, 
      '.jpg' AS FileType, 
      * FROM OPENROWSET(BULK N'C:\a.jpg', SINGLE_BLOB) AS photo;
GO



[解决办法]
可直接用 OPENROWSET把文件存储在数据库中
[解决办法]
//图片路径
string strPath = "~/photo/01.JPG";
string strPhotoPath = Server.MapPath(strPath);
//读取图片
FileStream fs = new System.IO.FileStream(strPhotoPath, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
byte[] photo = br.ReadBytes((int)fs.Length);
br.Close();
fs.Close();
//存入
SqlConnection myConn = new SqlConnection("Data Source=127.0.0.1;Initial Catalog=TestDB;User ID=sa;Password=sa");
string strComm = " INSERT INTO personPhoto(personName, personPhotoPath, personPhoto) ";
strComm += " VALUES('ky_min', '" + strPath + "', @photoBinary )";
SqlCommand myComm = new SqlCommand(strComm, myConn);
myComm.Parameters.Add("@photoBinary", SqlDbType.Binary,photo.Length);
myComm.Parameters["@photoBinary"].Value = photo;
myConn.Open();
myComm.ExecuteNonQuery();
myConn.Close();

不知道你程序用的是什么语言,我整个C#的希望于你有用

一些很年经验的经理和总管都说,不要把图片存在数据库内.
如果是怕盗链图片等东西的话, 可以在IIS上配置.

热点排行