可以储存照片的字段类型是_sql server 中 哪个字段类型可以储存图象?

展开全部

可以将图片上传到指定目录并将路径记录在数据库中,要用的时候再从数据库中取路径根据路径找到图片。e68a84e8a2ad62616964757a686964616f31333234303663

也可以直接存在数据库中。SqlServer中用Image列来保存图片

两者各有千秋,从性能上考虑应用第一种,从安全上考虑应用第二种

以下为存在数据库中的例子:来源于百度

首先在SQL Server中建立一个图片存储的数库表,ImageData Column为图象二进制数据储存字段,ImageContentType Column为图象文件类型记录字段,ImageDescription Column为储蓄图象文件说明字段,ImageSize Column为储存图象文件长度字段,结构如下:

CREATE TABLE [dbo].[ImageStore] (

[ImageID] [int] IDENTITY (1, 1) NOT NULL ,

[ImageData] [image] NULL ,

[ImageContentType] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,

[ImageDescription] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,

[ImageSize] [int] NULL

) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

*/

//UpLoadImage.aspx程序内容如下:

上传图片
上传图片(选择你要上传的图片)

文件说明(添加上传图片说明,如:作者、出处)

//-------------------------------------------------------------------

//UpLoadImage.cs程序内容如下:

using System;

using System.Web;

using System.IO;

using System.Data;

using System.Data.SqlClient;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.HtmlControls;

namespace UploadImage

{

public class UploadImage : Page {

protected HtmlInputFile UP_FILE; //HtmlControl、WebControls控件对象

protected TextBox txtDescription;

protected Label txtMessage;

protected Int32 FileLength = 0; //记录文件长度变量

protected void Button_Submit(System.Object sender, System.EventArgs e) {

HttpPostedFile UpFile = UP_FILE.PostedFile; //HttpPostedFile对象,用于读取图象文件属性

FileLength = UpFile.ContentLength; //记录文件长度

try {

if (FileLength == 0) { //文件长度为零时

txtMessage.Text = "请你选择你要上传的文件";

} else {

Byte[] FileByteArray = new Byte[FileLength]; //图象文件临时储存Byte数组

Stream StreamObject = UpFile.InputStream; //建立数据流对像

//读取图象文件数据,FileByteArray为数据储存体,0为数据指针位置、FileLnegth为数据长度

StreamObject.Read(FileByteArray,0,FileLength);

//建立SQL Server链接

SqlConnection Con = new SqlConnection("Data Source=Localhost;Initial Catalog=testdb;User ID=sa;Pwd=;");

String SqlCmd = "INSERT INTO ImageStore (ImageData, ImageContentType, ImageDescription, ImageSize) VALUES (@Image, @ContentType, @ImageDescription, @ImageSize)";

SqlCommand CmdObj = new SqlCommand(SqlCmd, Con);

CmdObj.Parameters.Add("@Image",SqlDbType.Binary, FileLength).Value = FileByteArray;

CmdObj.Parameters.Add("@ContentType", SqlDbType.VarChar,50).Value = UpFile.ContentType; //记录文件类型

//把其它单表数据记录上传

CmdObj.Parameters.Add("@ImageDescription", SqlDbType.VarChar,200).Value = txtDescription.Text;

//记录文件长度,读取时使用

CmdObj.Parameters.Add("@ImageSize", SqlDbType.BigInt,8).Value = UpFile.ContentLength;

Con.Open();

CmdObj.ExecuteNonQuery();

Con.Close();

txtMessage.Text = "

OK!你已经成功上传你的图片";//提示上传成功

}

} catch (Exception ex) {

txtMessage.Text = ex.Message.ToString();

}}}}

//----------------------------------------------------------------------

//好了,图片已经上传到数据库,现在还要干什么呢?当然是在数据库中读取及显示在Web页中啦,请看以下程序:

//ReadImage.aspx程序内容如下:

/-----------------------------------------------------------------------

//----------------------------------------------------------------------

//ReadImage.cs程序内容如下:

using System;

using System.Data;

using System.Data.SqlClient;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.HtmlControls;

namespace ReadImage {

public class MainDisplay : System.Web.UI.Page {

public void Page_Load(System.Object sender, System.EventArgs e) {

int ImgID = Convert.ToInt32(Request.QueryString["ImgID"]); //ImgID为图片ID

//建立数据库链接

SqlConnection Con = new SqlConnection("Data Source=KING;Initial Catalog=testdb;User ID=sa;Pwd=;");

String SqlCmd = "SELECT * FROM ImageStore WHERE ImageID = @ImageID";

SqlCommand CmdObj = new SqlCommand(SqlCmd, Con);

CmdObj.Parameters.Add("@ImageID", SqlDbType.Int).Value = ImgID;

Con.Open();

SqlDataReader SqlReader = CmdObj.ExecuteReader();

SqlReader.Read();

Response.ContentType = (string)SqlReader["ImageContentType"];//设定输出文件类型

//输出图象文件二进制数制

Response.OutputStream.Write((byte[])SqlReader["ImageData"], 0, (int)SqlReader["ImageSize"]);

Response.End();

Con.Close();

//很简单吧^_^

}

}

}

//--------------------------------------------------------------------

//最后,我们当然要把它在Web页面显示出来啦

//ShowImage.hml

这个是从数据库读取出来的图象:

//------------------------------------------------------------------

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/568078.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

假设前置数据法|全网唯一

系统中A模块是发布岗位&#xff0c;B模块是岗位详情&#xff0c;小王测试的是A模块&#xff0c;小张测试的是B模块&#xff0c;小张在测试B模块时往往很少去考虑前置模块A产生的各种类型、各种异常不确定数据&#xff0c;导致了经常出现一些问题&#xff0c;如果小张当时考虑了…

emulator教程 lbochs pc_bochs 开启调试选项

安装从http://bochs.sourceforge.net/下载./configure --with-all-libs --enable-vbe --enable-debuggermakemake install#需要声卡加--enable-sb16&#xff0c;需要网卡加--enable-ne2000&#xff0c;#64位机使用--enable-x86-64&#xff0c;mmx和sse, smp默认不支持用SLS Lin…

TensorFlow7-多元线性回归模型

运行结果&#xff1a;错误 # 不确定多少行为None。列为12列。即12个数据特征 xtf.placeholder(tf.float32,[None,12],name"X") # 12个特征数据ytf.placeholder(tf.float32,[None,1],name"Y") # 1个标签数据### 创建变量 定义模型结构# 定义了一个命令空…

史上最全jmeter逻辑控制器案例详解

在jmeter中逻辑控制器可以控制采样器(samplers)的执行顺序。由此可知&#xff0c;控制器需要和采样器一起使用&#xff0c;否则控制器就没有什么意义了。放在控制器下面的所有的采样器都会当做一个整体&#xff0c;执行时也会一起被执行。 &#xff08;1&#xff09;控制测试计…

python3.8.2中文手册chm_3.2.2中文语法考察

3自然语言3.1动物的语言3.2自然语言3.2.1英文语法考察3.2.2中文语法考察常见理论可对中文进行的描写与解读如下。汉字的起始是笔划&#xff0c;包括有&#xff1a;横、竖、撇、点、捺、提六种基本笔划&#xff1a;一、丨、丿、丶、㇏、㇀。这些基本笔划可以进一步组合出25种复合…

TensorFlow8-mnist手写数字识别入门

分类问题的损失函数为什么一般不用MSE&#xff1f;MSE在逻辑回归中可能具有多个局部最优点 不能用梯度下降算法

jmeter服务器性能资源监控部署

1、下载https://jmeter-plugins.org/install/Install安装插件plugins-manager放置lib/ext下&#xff0c;重启jmeter选项页面可查看到此下载插件 2、准备客户端插件jmeter-plugins-perfmon-2.1.jar和服务端监控插件ServerAgent-2.2.3&#xff08;CMDRunner.jar、ServerAgent.jar…

高德地图怎么搜索marker_2018-07-06 高德地图搜索定位,滑动地图显示周边信息,根据地址搜经...

emmmm&#xff0c;效果图先行(搜索定位以及自由滑动地图展示周边位置信息,根据点击的位置获取经纬度)aa.gif主要代码package com.dydd.wsp.dreamtree.ui.mapimport android.content.Contextimport android.os.Bundleimport android.support.v7.widget.LinearLayoutManagerimpor…

C++中log的底数理解

C 中log是以e为底的 log10 是以10为底的 现在来看看为什么底数具体为多少不重要&#xff1f; 读者只需要掌握&#xff08;依稀记得&#xff09;中学数学知识就够了。 假设有底数为2和3的两个对数函数&#xff0c;如上图。当X取N&#xff08;数据规模&#xff09;时&#xff0…

【性能测试】性能需求挖掘、性能方案制定及压测场景设计之疑惑与思考(一)

压力测试 模拟用户在同一时间对服务器发送大量请求&#xff0c;以此查看服务器性能指标&#xff0c;尤其关注大业务量情况下运行系统性能的变化&#xff08;反应变慢、是否会内存泄漏导致系统逐渐崩溃、是否能恢复&#xff09;&#xff0c;测试系统的限制和故障恢复能力&#…

条件编译 #ifndef _HEAD_H...中下划线的理解

1.下划线“__”属于编程风格的内容&#xff0c;对程序没有影响。不用下划线也可以&#xff0c;用几个下划线也由个人习惯。 2.其实质是一个宏名。由此我们可以防止发生重复定义或声明。 假设你的头文件名为head.h&#xff0c;根据习惯&#xff0c;我们声明一个宏HEAD_H,对应这…

java如何禁用usb_IT技巧分享59: 如何禁用USB端口以及光驱来保证数据不被泄露

现在电脑USB接口是最基本的一个配置&#xff0c;能快速的把电脑文件拷贝到u盘或者移动硬盘&#xff0c;大大的提高了我们的工作效率&#xff0c;但也容易感染病毒&#xff0c;把公司商业机密泄露出去&#xff0c;为了加强公司安全措施&#xff0c;现提供禁用USB办法。操作步骤&…

mysql原理--连接查询的成本

1.准备工作 连接查询至少是要有两个表的&#xff0c;只有一个 single_table 表是不够的&#xff0c;所以为了故事的顺利发展&#xff0c;我们直接构造一个和 single_table 表一模一样的 single_table2 表。为了简便起见&#xff0c;我们把 single_table 表称为 s1 表&#xff0…

jmeter模拟压测真实复杂用户场景,阶梯螺纹线程组Stepping Thread Group终极线程Ultimate Thread Group并发线程Concurrency Thread Group

我们有时需要模拟非常真实复杂的用户压测场景&#xff0c;可以用到此插件来设计场景 1、安装插件&#xff0c;选项——Plugins Manager打开安装页面 2、搜索standard set并安装&#xff0c;重启jmeter&#xff0c;查看测试计划——添加线程组——jpgc - Stepping Thread Group…

防止文件重复定义之方法

防止重复定义用#ifndef #define #endif 若文件为类中成员函数可以直接使用 若文件为函数&#xff0c;若函数的声明和定义放在一起&#xff0c;则只能采用static或者inline方法解决。用#ifndef不管用 若文件为函数时&#xff0c;函数的声明和定义分别放在.h和.cpp中&#xff…

部署java项目_企业最看重什么样的Java人才?

很多人学习Java真的不是为了梦想&#xff0c;不是爱好&#xff0c;仅仅是想成为拿到高薪的那个人&#xff0c;成为同学里赚的最多的人&#xff0c;成为别人嘴里谈着的那个人。要成为拿高薪的Java工程师&#xff0c;我们要先看看企业到底需要哪方面的人才。上图是某招聘网站上Ja…

jmeter如何通过后置处理器提取(正则提取器、json提取器)做接口关联?

一、后置处理器—正则表达式提取器 1、添加正则表达式提取 2、正则表达式提取面板介绍&#xff1a; 引用名称&#xff1a;提取引用名称&#xff0c;下个请求要引用此参数名称&#xff0c;如填写token&#xff0c;下个请求中用${token} 正则表达式&#xff1a;()&#xff1a;括…

数据结构树4-二叉搜索树2

二叉搜索树.h: #ifndef _二叉查找树_H #define _二叉查找树_H #include<iostream> #include<string>enum Boolean{ FALSE,TRUE}; template<class Type> class Element { public:Type key;//方便添加更新数据 }; // 错误我的写法&#xff1a;template<c…

mixin机制 vue_vue mixins组件复用的几种方式(小结)

最近在做项目的时候&#xff0c;研究了mixins&#xff0c;此功能有妙处。用的时候有这样一个场景&#xff0c;页面的风格不同&#xff0c;但是执行的方法&#xff0c;和需要的数据非常的相似。我们是否要写两种组件呢&#xff1f;还是保留一个并且然后另个一并兼容另一个呢&…

【功能业务篇】APP授权微信登录、绑定账号测试思考

参考https://open.weixin.qq.com/cgi-bin/showdocument?actiondir_list&tresource/res_list&verify1&idopen1419317851&token&langzh_CN 准备工作 移动应用微信登录是基于OAuth2.0协议标准 构建的微信OAuth2.0授权登录系统。 在进行微信OAuth2.0授权登…