sql中的image数据类型问题

deng_yuxi 2011-08-19 01:54:57
我在做一个新闻发布系统
新闻表里面有image这个字段,数据类型也是image,我需要插入多张图片怎么办啊?
在查询显示这些图片的时候又该怎么做呢?各位帮帮忙。。。。。。。。多谢啦。。。
...全文
346 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
changjiangzhibin 2011-08-19
  • 打赏
  • 举报
回复
多个图片的话:
1、存放相对路径,以逗号或其他符号分隔,读取方便,常用;
2、直接存放byte[]数组,可考虑关联到另一张表中存放;
CalvinR 2011-08-19
  • 打赏
  • 举报
回复
顶子夜
子夜__ 2011-08-19
  • 打赏
  • 举报
回复
二进制图片显示

上传二进制
if (FileUpLogo.HasFile)
{
//取得上传文件的大小
int FileLen = FileUpLogo.PostedFile.ContentLength;
Byte[] FileData = new Byte[FileLen];
//创建访问客户端上传文件的对象
HttpPostedFile hp = FileUpLogo.PostedFile;
//创建数据流对象
System.IO.Stream sr = hp.InputStream;
//将图片数据放到FileData数组对象实例中,0代表数组指针的起始位置,FileLen代表指针的结束位置
sr.Read(FileData, 0, FileLen);
//将FileData 赋值给实体
brandModel.fld_logo = FileData;
}

或者

HttpPostedFile upFile = up_file.PostedFile;//HttpPostedFile对象,用来读取上传图片的属性
fileLength = upFile.ContentLength;//记录文件的长度
try
{
if(fileLength==0)//当文件长度为0的时候
{
txtMessage.Text = "请选择要上传的文件!";
}
else
{
byte[] fileByte = new byte[fileLength];//用图片的长度来初始化一个字节数组存储临时的图片文件
Stream fileStream = upFile.InputStream;//建立文件流对象
fileStream.Read(fileByte,0,fileLength);//读取图片数据到临时存储体fileByte,0为数据指针位置,fileLength为数据长度
string connString = "Data Source=192.168.1.250;database=image;uid=pwqzc;pwd=cn0088";
SqlConnection conn = new SqlConnection(connString);//初始化数据库连接
string insertStr = "insert into image (image_data,image_content_type,image_description,image_size) values (@image_data,@image_content_type,@image_description,@image_size)";
//插入数据库语句
SqlCommand comm = new SqlCommand(insertStr,conn);
comm.Parameters.Add(new SqlParameter("@image_data",SqlDbType.Image));//添加参数
comm.Parameters["@image_data"].Value = fileByte;//给参数赋值
comm.Parameters.Add(new SqlParameter("@image_content_type",SqlDbType.VarChar,50));
comm.Parameters["@image_content_type"].Value = upFile.ContentType;//记录图片类型
comm.Parameters.Add(new SqlParameter("@image_description",SqlDbType.VarChar,50));
comm.Parameters["@image_description"].Value = txtDescription.Text;//把其他的表单数据上传
comm.Parameters.Add(new SqlParameter("@image_size",SqlDbType.Int,4));
comm.Parameters["@image_size"].Value = upFile.ContentLength;//记录图片长度,读取数据的时候使用
conn.Open();//打开数据库连接
comm.ExecuteNonQuery();//添加数据
conn.Close();//关闭数据库
txtMessage.Text = "你已经成功的上传了图片";
}
}
catch(Exception ex)
{
txtMessage.Text = ex.Message.ToString();
}
}
}



读取的时候
<img src="a.aspx?id=x" />
show.aspx 的后台


private void Page_Load(object sender, System.EventArgs e)
{
string strID = Request.QueryString["id"];
string sqlstr = "select photo from Tb where id=@id";
SqlConnection myConnection = new SqlConnection(connstr);
SqlCommand myCommand = new SqlCommand(sqlstr, myConnection);
myCommand.AddWithValue("@id", strID);
try
{
myConnection.Open();
SqlDataReader dr = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
if (dr.Read())
{
Response.Clear();
Response.ContentType = "image/gif";
Response.BinaryWrite((byte[])dr["photo"]);
}
myConnection.Close();
}
catch (SqlException ex)
{
}
Response.End();
}
接分为押宝 2011-08-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 taomanman 的回复:]
image字段类型设置成text类型,然后插入图片的话包括文字的信息,通过文本编辑器来操作。
[/Quote]
image字段换成text 已","分割不同图片,图片相对路径。
通过文本编辑器进行操作。具体看你用的文本编辑器了。
sswwyy 2011-08-19
  • 打赏
  • 举报
回复
将image字段类型设置成nvarchar
上传多张图片将多个图片的名称用','啊什么的连接起来,存入image这个字段

显示的根据','拆分一下就可以了
LMAOhuaNL 2011-08-19
  • 打赏
  • 举报
回复
嗯,设置成text文本类型的数据,这样你读取数据也比较方便
暖枫无敌 2011-08-19
  • 打赏
  • 举报
回复
image字段类型设置成text类型,然后插入图片的话包括文字的信息,通过文本编辑器来操作。

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧