c# winform数据库中存储图片是二进制的,现在却不能在datagridview中显示出来,求高手支招。

c# winform数据库中存储图片是二进制的,现在却不能在datagridview中显示出来,求高手支招。,第1张

那个老师教你用datagridview显示图片!用pictureBox不是更好吗?我给你一段源程序!你好好看看!数据库我也给你!只是图片!

源代码如下:

using System

using System.Collections.Generic

using System.ComponentModel

using System.Data

using System.Drawing

using System.Text

using System.Windows.Forms

using System.Data.SqlClient

using System.IO

using System.Data.SqlTypes

namespace BLOB

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent()

UpdateTime.Text = System.DateTime.Now.ToString()

}

string PhotoName = ""

byte[] Pic

private void BSelect_Click(object sender, EventArgs e)

{

openFileDialog1.Filter = "选择图片(*.BMP*.JPG*.GIF)|*.BMP*.JPG*.GIF|All files(*.*)|*.*"

if (openFileDialog1.ShowDialog() == DialogResult.OK)

{

pictureBox1.Image = Image.FromFile(openFileDialog1.FileName,true)//牛逼啊、、、、、、、、、、、、

PhotoName = openFileDialog1.FileName

Pname.Text = PhotoName.Substring(PhotoName.LastIndexOf(@"\") + 1)//1·11!!

}

else

{

MessageBox.Show("您还未选取图片", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)

return

}

}

private void BAdd_Click(object sender, EventArgs e)

{

SqlConnection conn = new SqlConnection("Data Source=.Initial Catalog=ContactIntegrated Security=True")

try

{

conn.Open()

SqlCommand cmd = new SqlCommand("insert into BLOB values(@name,@time,@photo)", conn)

cmd.Parameters.AddWithValue("@name", Pname.Text)

cmd.Parameters.AddWithValue("@time", UpdateTime.Text)

Pic = File.ReadAllBytes(PhotoName)

cmd.Parameters.AddWithValue("@photo", Pic)

cmd.ExecuteNonQuery()

conn.Close()

MessageBox.Show("插入数据成功!", "提示:", MessageBoxButtons.OKCancel, MessageBoxIcon.Information)

}

catch (Exception ex)

{

MessageBox.Show(ex.ToString())

}

}

private void Form1_Load(object sender, EventArgs e)

{

SqlConnection conn = new SqlConnection("Data Source=.Initial Catalog=ContactIntegrated Security=True")

if (conn.State == ConnectionState.Closed)

{

conn.Open()

}

SqlCommand cmd = new SqlCommand("select name from BLOB",conn)

SqlDataReader dr = cmd.ExecuteReader()

while (dr.Read())

{

list.Items.Add(dr.GetString(0))

}

}

private void list_SelectedIndexChanged(object sender, EventArgs e)

{

if (list.SelectedIndex == -1)

{

return

}

else

{

SqlConnection conn = new SqlConnection("Data Source=.Initial Catalog=ContactIntegrated Security=True")

if (conn.State == ConnectionState.Closed)

{

conn.Open()

}

string SelectItem = list.SelectedItem.ToString()

SqlCommand cmd = new SqlCommand("Select * from BLOB where name=@SelectItems",conn)

cmd.Parameters.AddWithValue("@SelectItems", SelectItem)

SqlDataReader dr = cmd.ExecuteReader()

if (dr.Read())

{

Pname.Text = dr.GetString(0)

UpdateTime.Text = dr.GetDateTime(1).ToString()

SqlBytes PhotoBytes = dr.GetSqlBytes(2)

pictureBox1.Image = Image.FromStream(PhotoBytes.Stream)

}

dr.Close()

conn.Close()  //最好加上这两个CLOSE()方法!

}

}

}

}

数据库图片 和 C# 图片 自己区分!我想你能看懂:

你在登陆界面登陆成功的时候 生成一个 记事本txt 文件 把你的用户名写在 txt文件里面

当然在你登陆窗体加载的时候 要写一个 读取txt的方法

string str = 用户名 (字符创)

FileStream fs=new FileStream (path+".txt",FileMode.Create)

StreamWriter sw = new StreamWriter(fs)

sw.Write(str)

sw.Close()

fs.Close()

写的 读的 是read

为了这20分 仁至义尽

我可以帮助你,你先设置我最佳答案后,我百度Hii教你。你的串号我已经记下,采纳后我会帮你制作

PHP

4.4.1+MySQL

5.1的环境下出现了如下的提示:

复制代码

代码如下:

File

‘c:\mysql\share\charsets\?.conf'

not

found

(Errcode:

22)

Character

set

‘#33′

is

not

a

compiled

character

set

and

is

not

specified

in

the

‘c:\mysql\share\charsets\Index'

file

查阅一番后基本可以确定原因为低版本的PHP和高版本的MySQL之间的兼容性导致的。

最简单的办法是升级PHP到PHP5.3版本即可搞定,未知测试。因服务器不是我配的,不敢乱动,怕搞出麻烦,于是保留低版本的PHP,另寻其他方法。

以下试验了多种网络上查到的解决方法,供大家参考:

有说是MySQL的配置中basedir没设好,检查了一下MySQL安装目录下的my.ini,basedir正确,不是这个原因。

有说把MySQL的配置my.ini中的default-character-set=utf8前面加#注释掉就搞定的,我改了,无效。

有说把MySQL安装目录\share\charsets目录下的所有文件复制到c:\mysql\share\charsets\下的,我复制了,一样无效。

最后找到一种方法,把PHP.ini中的output_buffering

=

Off

改为

output_buffering

=

On,上面的提示不见了,搞定。

知其然,不知其所以然。哪位大虾知道的,烦请告知,小弟谢过!

暂时解决...\charsets\?.conf'

not

found

(Errcode:

22)

Character

set

'#33'

php程序提示以下类似的错误的信息:

File

'c:\mysql\share\charsets\?.conf'

not

found

(Errcode:

22)

Character

set

'#33'

is

not

a

compiled

character

set

and

is

not

specified

in

the

'c:\mysql\share\charsets\Index'

file

这个错误没有影响程序的运行,但是影响界面。

大概的原因应该是因为Mysql

4.1以上的版本对编码规则改变导致了好多大大小小的问题,如果服务器的默认字符集是UTF8,DOS的窗口就会出现此类提示。

出现这样问题的人不在少数,但是从搜索的结果来看,最后解决这个问题的人是极少数的,据说有人用了php5就解决了。但是我不愿意升级到php5,最后花了好多时间才看到一个人的好建议(因为在公司搜索的时候没有记录,所以出处无从考究了),那个人大概的意思是从Myslq官方网站看到以下信息:

"后来在Mysql的官方网站上看有人说,错误提示信息不是说要找那个目录的某个文件吗,那就去建立一个目录"!

更好的地方是,那个贴子还提供了相关的文件,我特地装进U盘带了回来,共享一下!

PS:解压以后把mysql这个文件夹中的Charsets目录替换mysql下的Charsets目录就行了!

压缩包下载:点这里下载附件(mysql.zip)

apache+php+mysql中图片不能显示问题

做了一个显示数据库中图片的php网页,但是显示不出来。查Apache中的log,发现有如下提示:

File

'c:\mysql\share\charsets\?.conf'

not

found

(Errcode:

2)

Character

set

'#24'

is

not

a

compiled

character

set

and

is

not

specified

in

the

'c:\mysql\share\charsets\Index'

file

File

'c:\mysql\share\charsets\?.conf'

not

found

(Errcode:

2)

Character

set

'#24'

is

not

a

compiled

character

set

and

is

not

specified

in

the

'c:\mysql\share\charsets\Index'

file

File

'c:\mysql\share\charsets\?.conf'

not

found

(Errcode:

2)

解决办法:

现确定phpinfo()显示的mysql的版本。如果显示的版本和机器里正在运行的mysql的版本不一样就说明是有问题了。我机器上运行的是4.1版本的,但是显示的是3.23.49版本。可能是以前安装的mysql版本没有卸载完全。重新编译PHP,

./configure

--with-mysql=/${MYSQL}

.再次查看phpinfo()里mysql的版本。重新刷新显示图片的页面,能够正常显示。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6721216.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-27
下一篇 2023-03-27

发表评论

登录后才能评论

评论列表(0条)

保存