大家帮我看看怎么回事 数据库存取图片的时候显示参数无效

wgq6634231 2010-05-29 03:22:11
这是向数据库内存入图片和其形状特征的代码


string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
string cmdStr = "insert into imageinfo (imagename,imagestore,waiguanbi,xzyz,pianxinlv) values (@imagename,@imagestore,@waiguanbi,@xzyz,@pianxinlv)";
SqlConnection conn = new SqlConnection(connStr);
SqlCommand cmd = new SqlCommand(cmdStr, conn);
try
{
MemoryStream ms = new MemoryStream();
pbxselect.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
byte[] mydata = new byte[ms.Length];
ms.Position = 0;
ms.Read(mydata, 0, Convert.ToInt32(ms.Length));
ms.Close();
SqlParameter imagestore = new SqlParameter("@imagestore", mydata);
SqlParameter imagename = new SqlParameter("@imagename", tbxname.Text.ToString());
SqlParameter waiguanbi = new SqlParameter("@waiguanbi", tbxwgb.Text.ToString());
SqlParameter xzyz = new SqlParameter("@xzyz", tbxxzyz.Text.ToString());
SqlParameter pianxinlv = new SqlParameter("@pianxinlv", tbxpxl.Text.ToString());
if (tbxname.Text.ToString() == "" || tbxwgb.Text.ToString() == "" ||tbxxzyz.Text.ToString() == "" || tbxpxl.Text.ToString() == "")
{
MessageBox.Show("请输入图像名称并计算出形状特征后再存储!", this.Text, MessageBoxButtons.OK);
}
else
{
conn.Open();
cmd.Parameters.Add(imagestore);
cmd.Parameters.Add(imagename);
cmd.Parameters.Add(waiguanbi);
cmd.Parameters.Add(xzyz);
cmd.Parameters.Add(pianxinlv);
cmd.ExecuteNonQuery();
MessageBox.Show("图像和特征值上传成功!", this.Text, MessageBoxButtons.OK);

}


}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
conn.Close();
}

下面是读取数据的时候的代码 我插入断点后看了一下存取的二进制数据长度不一样 导致读取图片的时候参数无效 就是不知道哪里出错了 各位高人帮忙下吧。。


string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
SqlConnection conn = new SqlConnection(connStr);
string cmdStr = null;
if (radioButton1.Checked == true)
{
querystr = "select * from imageinfo where waiguanbi = '" + tbxwgb.Text + "'";
}
if (radioButton2.Checked == true)
{
querystr = "select * from imageinfo where xzyz = '" + tbxxzyz.Text + "'";
}
if (radioButton3.Checked == true)
{
querystr = "select * from imageinfo where pianxinlv = '" + tbxpxl.Text + "'";
}

cmdStr = querystr;
SqlCommand cmd = new SqlCommand(cmdStr, conn);
SqlDataReader dr = null;
DataTable dt = new DataTable();
try
{
conn.Open();
dr = cmd.ExecuteReader();
dt.Load(dr);
if (dt.Rows.Count == 0)
{
MessageBox.Show("数据库中没有该内容的图像!", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{

tbxname.Text = dt.Rows[0]["imagename"].ToString();
tbxwgbend.Text = dt.Rows[0]["waiguanbi"].ToString();
tbxxzyzend.Text = dt.Rows[0]["xzyz"].ToString();
tbxpxlend.Text = dt.Rows[0]["pianxinlv"].ToString();
object obj = dt.Rows[0]["imagestore"];
byte[] mybyte = (byte[])obj;
MemoryStream ms = new MemoryStream(mybyte,false);
pbxend.Image = Image.FromStream(ms);
ms.Close();
...全文
180 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wgq6634231 2010-05-29
  • 打赏
  • 举报
回复
刚才又试了一个图片 可能以前用的图片二进制图片太大 换了个小的可以正常显示了 代码怎么改下呢?
wgq6634231 2010-05-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xiaozhi_5638 的回复:]
imagestore字段是image类型吗?
[/Quote]

请叫我卷福 2010-05-29
  • 打赏
  • 举报
回复
imagestore字段是image类型吗?
wgq6634231 2010-05-29
  • 打赏
  • 举报
回复
继续顶
wgq6634231 2010-05-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zjtpiaoxue 的回复:]
byte[] mydata = new byte[ms.Length];
你把byte类型存入数据库可能会有问题,要是长度不够怎么办?
数据库支持直接存储二进制图片的
这有例子你可以看看
http://www.cnblogs.com/zwei1121/archive/2006/12/19/596708.html
[/Quote]长度不是用流的长度定义的么 怎么可能不够了 我是新手
zjtpiaoxue 2010-05-29
  • 打赏
  • 举报
回复

byte[] mydata = new byte[ms.Length];
你把byte类型存入数据库可能会有问题,要是长度不够怎么办?
数据库支持直接存储二进制图片的
这有例子你可以看看
http://www.cnblogs.com/zwei1121/archive/2006/12/19/596708.html
wgq6634231 2010-05-29
  • 打赏
  • 举报
回复
求各位帮个忙 在线等 要交毕业设计了、、、
本课程目前总计105课时,并且不定期的进行新知识点的补充,目的是打造一部围绕MySQL的全体系课程。课程涵盖11大章节,分别是:第1章基础&技巧:这部分的重点是会讲解一些容易被开发人员忽略的技巧,例如utf8mb4字符集问题、如何使用外部临时表提高查询效率、快速创建同结构表及快速复制数据、截断表和删除数据使用和差异、以及怎样使用help语句查看助文档。第2章六大数据类型:这部分的重点是对MySQL的8种数字类型、5种日期和时间类型、10种字符串类型、枚举类型、集合类型和时间戳类型的区别和使用进行深入讲解。第3章数据库函数大全:MySQL中有上百种函数之多,使用函数可以快速的解决我们很多开发问题,但是由于我们掌握的函数不够多,往往没有办法实际应用,本章节重点是让你掌握更多好用而你不知道的函数使用。第4章数据库引擎精讲:本章节带您深入到MySQL的体系架构,深入理解innoDB、MyISAM、MEMORY、ARCHIVE引擎的区别和使用原则。第5章数据库索引精讲:索引是保障我们查询效率的重点,本章节从逻辑存储和物理存储的底层入手,深入剖析索引的存储结构和查找方法,掌握聚簇索引、非聚簇索引、前缀索引等的存取原理和使用技巧。第6章调优工具:工欲善其事必先利其器,本章节带你掌握读写比例查询、缓存设置、执行计划和Profile调优工具。第7章参数调优和索引调优:怎么样让SQL执行的更快、数据库的性能更强,怎样充分利用索引进行不断的优化。本章节会为您讲解16种MySQL的优化策略。第8章SQL调优:SQL语句是我们日常使用的重点,怎么样写出一手高性能的SQL语句,其实是具有一定技巧的,本章节讲解8种优化策略,让数据SQL执行性能更强。第9章分库分表:在面对海量数据的时候单表和单个数据库的性能始终会存在瓶颈,本章节为您讲解分库分表的原理和技巧,怎么样使用Merge引擎分表、深入掌握MySQL数据库分区表的能力。第10章高可用架构和安全管理:本部分涵盖MySQL的高可用架构,主备架构、主从架构、主从从架构、互为主从架构。数据的同步复制、半同步复制、异步复制。主从复制原理和主从延迟的问题,以及在管理和开发层面怎样保证数据库安全。第11章MySQL日志:对MySQL的7种日志进行讲解,包括errorlog错误日志、general log查询日志、slow log慢日志、binlog 二进制日志、redlog重做日志。课程会附带配套文档和SQL脚本。有问题可以直接联系作者,24小时线上答疑。

110,534

社区成员

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

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

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