这是一个简单的向数据库中添加图片,显示图片的demo。
Demo中用到的数据库是sqlserver,其中有调用几个操作数据库的静态方法是我从自己写的一个sqlhelp静态类中提取出来的。
这里用到的功能比较少,所以我就没有将sqlhelp类贴出来了,如果有兴趣的朋友可以私信或者留下邮箱我发给你。
由于个人能力有限,难免会有遗漏或者不足之处,欢迎大家批评指正!
以下是具体实现步骤:
打开数据库管理软件sql server management studio 新建一个数据库,取名myPicData,如图:
![a6f71236484b853ead6811035d21b02d.gif](https://i-blog.csdnimg.cn/blog_migrate/6abc2ba861fc6bd5519e399954e8c119.gif)
打开visual studio 新建一个winform应用程序,在设计器中添加三个控件button listbox picturebox
- Button控件添加click事件,用来添加图片
- Listbox控件添加鼠标点击事件,用来显示数据库中的图片列表,点击列表中的item显示图片
- PictureBox控件用来显示图片,设置控件的BackgroundImageLayout属性为ImageLayout.Stretch
如图:
![393b2a06d3b49d6f4b18e7c716be7332.png](https://i-blog.csdnimg.cn/blog_migrate/c0f94490ec54090113168011a6333a4f.jpeg)
![ee2c3c64c13784fac6e94dda9669726b.png](https://i-blog.csdnimg.cn/blog_migrate/8557400f9c702dc8e5b2798e7ab74a4e.jpeg)
在窗口的load事件中判断数据库中是否有保存图片的表,如果没有则新建一个
//在数据库中新建一个pic_Table表用来保存添加的图片
string sql = @"CREATE TABLE pic_Table
(ID int NOT NULL IDENTITY(1,1) PRIMARY KEY, name nvarchar(50) NOT NULL, picture image NOT NULL, date datetime NOT NULL )";
//获取当前数据库中所有表
List tableList = new List();
GetTableInDatabase(tableList);
//判断pic_Table表(库存表)是否存在 没有则创建
if (!tableList.Contains("pic_Table"))
{
ExecuteNonQuery(sql);
}
![27d56519ad804f8dbd12adddf93479da.png](https://i-blog.csdnimg.cn/blog_migrate/cd4075200180b102558b07647ec4b89f.jpeg)
下面是listbox鼠标点击事件
![30deb83b85094d5e12805a3952e245c6.png](https://i-blog.csdnimg.cn/blog_migrate/2ba86a33e23a63e748902ec979d89601.jpeg)
两个操作数据库的静态方法
![301af1e91ae5c3b52ae3cfa177db2af0.png](https://i-blog.csdnimg.cn/blog_migrate/e9e41e21209c2fb57cfe3d7f2023957e.jpeg)
获取数据库的所有的表
![4a591d40d3cc66e85a661481c21cefb8.png](https://i-blog.csdnimg.cn/blog_migrate/b9287e319a1cfb5edd2333202ca9f0b0.jpeg)
从数据库中获取数据更新listbox列表
![5c9a39e695e338d66fb2827914dd4576.png](https://i-blog.csdnimg.cn/blog_migrate/e1c36413c0a8c3270d670b932a0366de.jpeg)
添加图片的方法我就不截图了,贴在后面的所有代码中
完整代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace 图片添加到数据库
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//连接数据库
private static readonly string constr = "server=19.41.238.68;database=myPicData;uid=sa;pwd=xia123456";
private void Form1_Load(object sender, EventArgs e)
{
//在数据库中新建一个pic_Table表用来保存添加的图片
string sql = @"CREATE TABLE pic_Table
(ID int NOT NULL IDENTITY(1,1) PRIMARY KEY, name nvarchar(50) NOT NULL, picture image NOT NULL, date datetime NOT NULL )";
//获取当前数据库中所有表
List tableList = new List();
GetTableInDatabase(tableList);
//判断pic_Table是否存在 没有则创建
if (!tableList.Contains("pic_Table"))
{
ExecuteNonQuery(sql);
}
//将pictureBox控件的背景图片布局属性设置为平铺
this.pictureBox1.BackgroundImageLayout = ImageLayout.Stretch;
//给listbox控件添加鼠标单击事件
this.listPic.MouseClick += listPic_MouseClick;
//从数据库中加载图片信息列表在listbox中
UpdatePicNameList();
}
//鼠标单击显示图片信息
void listPic_MouseClick(object sender, MouseEventArgs e)
{
if (listPic.SelectedIndex >= 0)
{
string sqlstr = "select * from [dbo].[pic_Table] where name = @picName";
SqlParameter par = new SqlParameter("@picName