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 指令或程序集引用?) 这样的错误有十几个 都是问 是否缺少引用 怎么回事啊 --------------------编程问答--------------------
在缺少引用的地方按下快捷键 Ctrl + .
添加引用。。。 --------------------编程问答--------------------
多谢 这个问题已经解决了 有了一个新问题 就是 用户 'sa' 登录失败。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Data.SqlClient.SqlException: 用户 'sa' 登录失败。
这个问题 用的上文的代码 就出现了这个错误 大神 肿么解决
--------------------编程问答--------------------
你用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