当前位置:编程学习 > C#/ASP.NET >>

ASP.NET图片二进制存入数据库并取出显示

测试项目
数据库建库代码:
create database ImageTest
go
use ImageTest
go
create table Images
(
id int primary key identity(1,1),
images image
)
go
====
保存图片的代码:
string path=@"c:\test.jpg";
 FileStream fs = File.Open(path, FileMode.Open);
            byte[] by = new byte[fs.Length];
            fs.Read(by, 0, (int)fs.Length);
string connString = "server=.;database=ShowImage;uid=sa;password=sa";
            SqlConnection conn = new SqlConnection(connString);
            conn.Open();
            string sql = string.Format("insert into images values('{0}')",fs);
            SqlCommand cmd = new SqlCommand(sql, conn);
            cmd.ExecuteNonQuery();
            conn.Close();
//数据插入成功!
====
取出图片的代码:
string connString = "server=.;database=ShowImage;uid=sa;password=sa";
            SqlConnection conn = new SqlConnection(connString);
            string sql = "select * from images";
            SqlDataAdapter da = new SqlDataAdapter(sql, conn);
            DataTable dt = new DataTable();
            da.Fill(dt);
            byte[] bt = (byte[])dt.Rows[0]["images"];
            MemoryStream s = new MemoryStream(bt);
            Bitmap bitmap = new Bitmap(s,true);//注意,代码到了这里,就提示“参数错误”的异常,但是,bt里面却是是有数据的。
    bitmap.Save(@"c:\test.副本.jpg");

请问,是哪里出现了问题,请给出正确的解释。 --------------------编程问答-------------------- 在asp.net中刷图片的话,一般都是在aspx页面后台刷出来。如果是winform的话,要转成bitmap对象,然后picturebox等控件接收就可以显示了。 --------------------编程问答-------------------- 这个地方先不管显示,我最终将生成好的图片保存到本地都不行,我标注红色的地方出现了异常。 --------------------编程问答-------------------- 问题找出来了,标注红色的地方时因为存到数据库的值有问题。
现将代码修改为:
创建数据库:
create database ShowImage
go
use ShowImage
go
create table Images
(
id int primary key identity(1,1),
images image
)
go
=======
创建ASP.NET工程,新建两个页面为:Default.aspx,Default2.aspx
在Default.aspx页面上添加一个按钮[保存],一个Image控件,一个显示按钮,Default2.aspx上面不添加任何控件
保存按钮的代码:
 string name = @"F:\test.jpg";
            FileStream fs = File.OpenRead(name);
            byte[] content = new byte[fs.Length]; 
            fs.Read(content, 0, content.Length); 
            fs.Close();
            SqlConnection conn = new SqlConnection("server=.;database=ShowImage;uid=sa;password=sa"); 
            SqlCommand cmd = conn.CreateCommand(); 
            conn.Open();
            cmd.CommandText = "insert into Images  (Images) values (@content)"; 
            cmd.CommandType = CommandType.Text;
                SqlParameter para = cmd.Parameters.Add("@content", SqlDbType.Image);
                para.Value = content;
                cmd.ExecuteNonQuery();
显示按钮的代码:
 Image1.ImageUrl = "Default2.aspx";
Default2.aspx的Page_Load事件里面写上:
 string imgid = Request.QueryString["imgid"];
            SqlConnection conn1 = new SqlConnection("server=.;database=showimage;uid=sa;password=sa");
            SqlCommand cmd1 = new SqlCommand("select images   from Images where id=3", conn1);
            conn1.Open(); 
            SqlDataReader sdr = cmd1.ExecuteReader(); 
            if (sdr.Read()) 
            { 
                Response.BinaryWrite((byte[])sdr["images"]);  
            } 
            Response.End();  --------------------编程问答-------------------- 你好 按照你的正确程序配置好 不能运行  错误提示是 错误 6 找不到类型或命名空间名称“FileStream”(是否缺少 using 指令或程序集引用?) 这样的错误有十几个 都是问 是否缺少引用 怎么回事啊  --------------------编程问答--------------------
引用 4 楼  的回复:
你好 按照你的正确程序配置好 不能运行  错误提示是 错误 6 找不到类型或命名空间名称“FileStream”(是否缺少 using 指令或程序集引用?) 这样的错误有十几个 都是问 是否缺少引用 怎么回事啊


在缺少引用的地方按下快捷键  Ctrl + . 

添加引用。。。 --------------------编程问答--------------------
引用 5 楼  的回复:
引用 4 楼 的回复:

你好 按照你的正确程序配置好 不能运行 错误提示是 错误 6 找不到类型或命名空间名称“FileStream”(是否缺少 using 指令或程序集引用?) 这样的错误有十几个 都是问 是否缺少引用 怎么回事啊


在缺少引用的地方按下快捷键 Ctrl + . 

添加引用。。。


多谢 这个问题已经解决了 有了一个新问题 就是  用户 'sa' 登录失败。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Data.SqlClient.SqlException: 用户 'sa' 登录失败。

这个问题 用的上文的代码  就出现了这个错误 大神 肿么解决
--------------------编程问答--------------------
引用 6 楼  的回复:
引用 5 楼  的回复:
引用 4 楼 的回复:

你好 按照你的正确程序配置好 不能运行 错误提示是 错误 6 找不到类型或命名空间名称“FileStream”(是否缺少 using 指令或程序集引用?) 这样的错误有十几个 都是问 是否缺少引用 怎么回事啊


在缺少引用的地方按下快捷键 Ctrl + .

添加引用。。。


多谢 这个问题已经解决了 有了一个新问题 ……


你用Sqlsever登陆,用户名:sa 密码:sa 能登进去吗?

uid=你能登进去的用户名;password=你能登进去的密码 --------------------编程问答--------------------
string connString = "server=.;database=ShowImage;uid=sa;password=sa";

--->

string connString = "server=.;database=ShowImage;uid = sa;pwd=sa";



string connString = "Server=.;Database=ShowImage;User ID=sa;Password=sa"; --------------------编程问答-------------------- 登陆问题解决 是因为sql的登录方式问题 选择了sql身份验证 用户名sa 密码sa  就好了
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,