C# 存图片到数据库的问题

qyulang 2008-07-11 10:52:25
现在数据库里只能存文本,我想存入图片,这是存文本的代码

protected void Button1_Click(object sender, EventArgs e)
{
//保存
string strHeadID = this.txtHeadID.Text.Trim();
string strCataID = this.txtCataID.Text.Trim();
DateTime dtDateTime = DateTime.Now;
string strText = this.txtText.Text;
string strTitle = this.txtTitle.Text;

strText = this.ReplayEmpty(strText);
strText = strText.Replace("\r\n", "</P><P>");
strText = "<P>" + strText;
strText = strText + "</P>";

//保存
string strSQL = string.Empty;

strSQL = "Insert Into TblNews(SortID,CatalogName,AddTime,NewsContent,NewsTitle) Values (";
strSQL += "'{0}','{1}','{2}','{3}','{4}')";
strSQL = string.Format(strSQL, new object[] {
strHeadID, strCataID, dtDateTime, strText,strTitle });

if (this.m_dbChunnel.RunDDLSql(strSQL) > 0)
{
}
else
{
Response.Write("数据保存失败,请重新再试!");
}
}
private string ReplayEmpty(string strText)
{
string str = string.Empty;

int i;
bool bReplayFlag = true;
for (i = 0; i < strText.Length; i++)
{
if (strText.Substring(i, 1) == "<")
{
bReplayFlag = false;
}

if (strText.Substring(i, 1) == ">")
{
bReplayFlag = true;
}

if (bReplayFlag && strText.Substring(i, 1) == " ")
{//替换
str += "  ";
}
else
{
str += strText.Substring(i, 1);
}
}
return str;
}
希望实现存入图片的功能,还有上面只是保存,如何写修改的呢,等待高手!
...全文
414 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
qyulang 2008-07-14
  • 打赏
  • 举报
回复
http://www.cnblogs.com/stewen/archive/2005/12/20/300587.html
qyulang 2008-07-14
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 ropean 的回复:]
MSSql有image 数据类型,mysql有blob类型,便均可存放二进制数据
[/Quote]
是啊,就是把图片的地址存储到数据库的一个字段里,上面有兄弟说用openFileDialog,但不知道怎么
用啊,.net2005 C#里的,找了半天没找到
随缘心 2008-07-14
  • 打赏
  • 举报
回复
本人除了再加一个image字段还没有什么好办法!
Ropean 2008-07-14
  • 打赏
  • 举报
回复
MSSql有image 数据类型,mysql有blob类型,便均可存放二进制数据
烤火的鱼 2008-07-13
  • 打赏
  • 举报
回复
对于图片、文件等,用image字段保存,要显示时,读到内存中,可以显示或保存地本地再操作,这是我常用的代码:
1、将一个文件读入到内存中,保存为byte[]型
/// <summary>
/// 将一个文件读入内存
/// </summary>
/// <param name="p_FileName">文件名</param>
/// <param name="p_ShowErrMessage">如果出现错误,是否显示错误信息</param>
/// <returns>读入成功,返回读入的内容,否则,返回null</returns>
public static byte[] UpLoadFile(string p_FileName, bool p_ShowErrMessage)
{
byte[] bytes = null;
FileInfo fileinfo = new FileInfo(p_FileName);
if (fileinfo.Exists)
{
try
{
using (FileStream fs = new FileStream(p_FileName, FileMode.Open))
{
bytes = new Byte[fs.Length];
fs.Position = 0;
fs.Read(bytes, 0, Convert.ToInt32(fs.Length));
fs.Close();//关闭文件
}
}
catch (Exception ee)
{
if (p_ShowErrMessage)
Tools.ShowMessage(ee.Message);
}
}
else
{
if (p_ShowErrMessage)
Tools.ShowMessage("文件:" + p_FileName + "不存在!");
}
return bytes;
}

2、上传文件部分代码片断:
string strSql = string.Format(
"update {0} set 文件名称='{1}',目录='{2}',模块名称='{3}'," +
"版本号={4},文件内容=@image where 文件名称='{1}' " +
"if @@rowcount=0 " +//更新失败,说明是新文件,插入一条记录
"insert into {0}(文件名称,目录,模块名称,版本号,文件内容,序号) " +
"values('{1}','{2}','{3}',{4},@image,{5})",
SpecialTableName.VersionTableName, filename, strDir,
txtModuleName.Text.Trim().Replace("'", ""),
txtNewVersion.Text, Tools.GetNextKey(SpecialTableName.VersionTableName));
try
{
using (SqlConnection aConnection = new SqlConnection(Tools.TrueConnectInfo))
{
aConnection.Open();
using (SqlCommand myCommand = new SqlCommand(strSql, aConnection))
{

myCommand.Parameters.Add(new System.Data.SqlClient.SqlParameter("@image", SqlDbType.Image));
myCommand.Parameters["@image"].Value = bytes;
myCommand.ExecuteNonQuery();
}
aConnection.Close();
}

Tools.ShowMessage("文件上传成功!");
}
catch (Exception ee)
{
Tools.ShowMessage(ee.Message);
}

}

注意里面的@image,下载就很简单了,select * from 后,byte[] a=(byte[]]row[字段名]就可以了
qyulang 2008-07-12
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 yagebu1983 的回复:]
你用Image字段试试!!
[/Quote]
写个例子啊 哥们
jackynt 2008-07-11
  • 打赏
  • 举报
回复
好像图片只能储存地址哇?
qyulang 2008-07-11
  • 打赏
  • 举报
回复
好象是吧,就是跟图片新闻一样,不光只有文本还要有图片[Quote=引用 6 楼 tmxk2002 的回复:]
文本里能带图片吗?应该是一个图片的连接吧
[/Quote]
  • 打赏
  • 举报
回复
文本里能带图片吗?应该是一个图片的连接吧
qyulang 2008-07-11
  • 打赏
  • 举报
回复
可能是我没说清楚吧,其实不需要单独搞个字段来存图片,
是一个字段是存新闻内容的,里面有文本,也有图片,现在
文本插进去了,想插入图片
qyulang 2008-07-11
  • 打赏
  • 举报
回复
这样的话,干脆打开数据库在数据库里面直接删除得了,我想先取出id再进行updata啊[Quote=引用 2 楼 panw520 的回复:]
先Delete,然后再Insert。
[/Quote]
kkun_3yue3 2008-07-11
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20080701/09/7dd5811f-6fac-4919-b604-80d5df6c86c3.html
panw520 2008-07-11
  • 打赏
  • 举报
回复
先Delete,然后再Insert。
qyulang 2008-07-11
  • 打赏
  • 举报
回复
存进去的时候需要注意格式,我想取出来的时候直接循环那个存值的table应该ok了吧
yagebu1983 2008-07-11
  • 打赏
  • 举报
回复
你用Image字段试试!!
qyulang 2008-07-11
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 syl2000 的回复:]
个人愚见:你的这个想法不大可能!你不是就要实现存放HTML文件,然后读取并显示它吗?试想,有哪个HTML文件里面既存放了文本,又存放了图片数据呢?没有!因此,你可以模仿HTML文件的办法,将图片链接存放到文本里面,来实现你想要的效果!
[/Quote]
将图片链接放在文本里就是如果图片的地址是C:\Documents and Settings\Administrator\桌面\images\1.gif
那只要在录入文本的时候录入这个地址吗 不可能吧

好象是先存放在那个表的一个字段里然后和文本一起取出来
syl2000 2008-07-11
  • 打赏
  • 举报
回复
个人愚见:你的这个想法不大可能!你不是就要实现存放HTML文件,然后读取并显示它吗?试想,有哪个HTML文件里面既存放了文本,又存放了图片数据呢?没有!因此,你可以模仿HTML文件的办法,将图片链接存放到文本里面,来实现你想要的效果!

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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