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

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

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

源代码如下:

using System;

using SystemCollectionsGeneric;

using SystemComponentModel;

using SystemData;

using SystemDrawing;

using SystemText;

using SystemWindowsForms;

using SystemDataSqlClient;

using SystemIO;

using SystemDataSqlTypes;

namespace BLOB

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

UpdateTimeText = SystemDateTimeNowToString();

}

string PhotoName = "";

byte[] Pic;

private void BSelect_Click(object sender, EventArgs e)

{

openFileDialog1Filter = "选择(BMP;JPG;GIF)|BMP;JPG;GIF|All files()|";

if (openFileDialog1ShowDialog() == DialogResultOK)

{

pictureBox1Image = ImageFromFile(openFileDialog1FileName,true);//牛逼啊、、、、、、、、、、、、

PhotoName = openFileDialog1FileName;

PnameText = PhotoNameSubstring(PhotoNameLastIndexOf(@"\") + 1);//;;;;;;;;;;;;;;;;;;;1·11!!

}

else

{

MessageBoxShow("您还未选取", "提示", MessageBoxButtonsOK, MessageBoxIconInformation);

return;

}

}

private void BAdd_Click(object sender, EventArgs e)

{

SqlConnection conn = new SqlConnection("Data Source=;Initial Catalog=Contact;Integrated Security=True");

try

{

connOpen();

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

cmdParametersAddWithValue("@name", PnameText);

cmdParametersAddWithValue("@time", UpdateTimeText);

Pic = FileReadAllBytes(PhotoName);

cmdParametersAddWithValue("@photo", Pic);

cmdExecuteNonQuery();

connClose();

MessageBoxShow("插入数据成功!", "提示:", MessageBoxButtonsOKCancel, MessageBoxIconInformation);

}

catch (Exception ex)

{

MessageBoxShow(exToString());

}

}

private void Form1_Load(object sender, EventArgs e)

{

SqlConnection conn = new SqlConnection("Data Source=;Initial Catalog=Contact;Integrated Security=True");

if (connState == ConnectionStateClosed)

{

connOpen();

}

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

SqlDataReader dr = cmdExecuteReader();

while (drRead())

{

listItemsAdd(drGetString(0));

}

}

private void list_SelectedIndexChanged(object sender, EventArgs e)

{

if (listSelectedIndex == -1)

{

return;

}

else

{

SqlConnection conn = new SqlConnection("Data Source=;Initial Catalog=Contact;Integrated Security=True");

if (connState == ConnectionStateClosed)

{

connOpen();

}

string SelectItem = listSelectedItemToString();

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

cmdParametersAddWithValue("@SelectItems", SelectItem);

SqlDataReader dr = cmdExecuteReader();

if (drRead())

{

PnameText = drGetString(0);

UpdateTimeText = drGetDateTime(1)ToString();

SqlBytes PhotoBytes = drGetSqlBytes(2);

pictureBox1Image = ImageFromStream(PhotoBytesStream);

}

drClose();

connClose();  //最好加上这两个CLOSE()方法!

}

}

}

}

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

1、使用blob将保存为二进制格式,(可以用浏览器来转换)随后用base64编码来保存,再将base64编码保存进数据库的clob类型字段上。

2、然后要用一个数据名称SystemDataOracleClient。

3、创建一个储存文件,然后把相关代码写入比如string execSql="insert into clob_table(clob_id,) values(1,:clob_pic);"编写代码的时候注意,后缀的符号(;")也要写入,不然无法进行下一步指令。

4、之前上面用的是base64编码,当显示的时候要将输出到浏览器流中,不然在base64里面是看不到。

5、在输出的时候要把转换成二进制(buffur即二进制编码)。

6、随后上传即可,然二进制流也可以存成文件(File)存到FTP服务器,当需要的时候可以根据路径进行下载的。

<html>

<head>

<script type="text/javascript">

function show()

{

var img = documentgetElementById("file")value;

documentgetElementById("photo")src =img;

}

</script>

</head>

<body>

<input type="file" onchange="show()" id="file"></input>

<img id="photo" src="" style="width:400px;height:300px;" ></img>

</body>

</html>

试试这段代码,不过在有的浏览器里面无效。

这样你觉得合适吗?如果很多呢?

基本上都是在数据库中存放的路径名。然后再webroot下建立个文件夹image,将放到这个image中。如果你需要取出,就通过路径名找到该即可。

1、首先运行SQL。

2、将数据库进行连接。

3、单击“服务器对象",在“服务器对象”中右键单击“备份设备”,选择”新建备份设备”。

4、在设备名称文本框输入你要创建的设备名称,然后单击“确定”。

5、这样备份设备的创建就完成了。

6、右键单击要备份的数据库,选择“任务”,在“任务”中选择“备份”。

7、单击“添加”,选中“备份设备”,单击“确定”。

8、删除文件目标,只保留备份设备,单击“确定”。

9、提示“备份已成功完成”。

10、这样就可以完成数据库的备份了。

扩展资料:

还执行语句,使用SQL最简单备份,还原数据库:

1、备份:backup database Test to disk='D:/Testbak'

2、还原:restore database Test from disk='D:/Testbak'

最好是用hibernate做新增 *** 作

Java code

Qztx qz = new Qztx();

InputStream inStream = new StringBufferInputStream(txcode);

Blob blob = HibernatecreateBlob(inStream);

Blob blobs = qzgetQzrzp();

qzsetQzrsfhm(sfhm);

qzsetQzrzp(blob);

qztxdaoinsertQztx(qz);

这个是我原来的,base64编码的字符串已经插入到blob字段里了

但是在pl/sql不能看到,而是看到的这个base64的字符串

有个包是要用ojdbc14jar。

以上就是关于c# winform数据库中存储图片是二进制的,现在却不能在datagridview中显示出来,求高手支招。全部的内容,包括:c# winform数据库中存储图片是二进制的,现在却不能在datagridview中显示出来,求高手支招。、图片如何存放在oracle数据库、jsp上传图片,选择图片后先不保存只显示在之前的页面,然后下面填写了其他的信息后在一起保存到数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存