最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

sql?server實(shí)現(xiàn)圖片的存入和讀取的流程詳解

 更新時(shí)間:2024年05月23日 10:35:16   作者:益生菌凍干粉  
這篇文章主要介紹了sql?server實(shí)現(xiàn)圖片的存入和讀取的詳細(xì)流程,文中通過(guò)代碼示例和圖文結(jié)合的方式給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下

首先提醒一下,無(wú)論是將圖片存入數(shù)據(jù)庫(kù),還是從數(shù)據(jù)庫(kù)中讀取,都是采用流的形式進(jìn)行,雖然,在數(shù)據(jù)庫(kù)中,存儲(chǔ)圖片的類(lèi)型是Image,但是sql中的Image和C#中的Image不一樣,就如同sql中的null的判斷在C#中得用DBNULL來(lái)判斷

先看窗體設(shè)計(jì),很簡(jiǎn)單,一共就五個(gè)控件,名字都沒(méi)改,pictureBox1,textBox1,button1,button2,button3(依次從上到下,從左到右),看源碼的時(shí)候會(huì)看到的

數(shù)據(jù)庫(kù)中表的設(shè)計(jì)

就一個(gè)Image

首先程序運(yùn)行,可以先選擇一張圖片

文本框中是圖片在本地磁盤(pán)上的路徑,在此掩蓋部分

然后點(diǎn)擊,存入數(shù)據(jù)庫(kù)

提示存入成功

在此,將窗體關(guān)閉,重新打開(kāi),讀取圖片。

至于為什么這么做看到源碼就知道了

重新打開(kāi)后的

點(diǎn)擊從數(shù)據(jù)庫(kù)中讀取按鈕

拿到了剛才存入的圖片

源碼:

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.Threading.Tasks;
using System.Windows.Forms;

namespace 讀取數(shù)據(jù)庫(kù)中的圖片
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        /// <summary>
        /// 選擇圖片
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            //初始化打開(kāi)文件 對(duì)話框
            OpenFileDialog ofdlgTest = new OpenFileDialog();
            ofdlgTest.Filter = "*.jpg|*.png";   //文件過(guò)濾 篩選可以打開(kāi)的文件
            ofdlgTest.Multiselect = false;    //設(shè)置不可以選擇多個(gè)文件

            //顯示文件打開(kāi)對(duì)話框
            DialogResult result = ofdlgTest.ShowDialog();
            
            //選擇打開(kāi)按鈕的時(shí)候,將文件名顯示到文本框中
            if (result== DialogResult.OK)                   //判斷是否打開(kāi)文件
            {
                this.textBox1.Text = ofdlgTest.FileName;

                pictureBox1.Image = Image.FromFile(ofdlgTest.FileName);
            }
        }

        /// <summary>
        /// 存入數(shù)據(jù)庫(kù)
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_Click(object sender, EventArgs e)
        {
            string constr = "Data Source=.;Initial Catalog=MyFirstDatabase;User Id=sa;PassWord=91811372c";

            using(SqlConnection con=new SqlConnection(constr))
            {
                //sql語(yǔ)句  插入圖片
                string sql = "insert into ImageTest values(@UserImage)";
                using(SqlCommand com=new SqlCommand(sql,con))
                {
                    byte[] buffer;   //將圖片轉(zhuǎn)換為字節(jié)數(shù)組 存入數(shù)據(jù)庫(kù)   textBox1.Text 是文件的路徑
                    using(FileStream stream = new FileStream(textBox1.Text, FileMode.OpenOrCreate, FileAccess.Read))
                    {
                        //通過(guò)文件路徑 打開(kāi)文件
                        buffer = new byte[stream.Length];
                        stream.Read(buffer, 0, buffer.Length);  //轉(zhuǎn)換后 ,存入buffer中
                    }

                    //這個(gè)參數(shù) 其實(shí) 也沒(méi)必要聲明 不過(guò)習(xí)慣使用 帶參數(shù)的sql語(yǔ)句了 
                    SqlParameter pms = new SqlParameter("@UserImage", SqlDbType.Image) { Value = buffer };
                    com.Parameters.Add(pms);
                    con.Open();
                    string msg = com.ExecuteNonQuery()>0?"存入成功":"存入失敗";
                    MessageBox.Show(msg);
                }
            }
        }

        /// <summary>
        /// 從數(shù)據(jù)庫(kù)中讀取
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button3_Click(object sender, EventArgs e)
        {
            string conStr = "Data Source=.;Initial Catalog=MyFirstDatabase;User Id=sa;PassWord=自己的密碼";
            using(SqlConnection con=new SqlConnection(conStr))
            {
                //sql語(yǔ)句
                string sql = "select * from ImageTest";
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    con.Open();

                   
                   using(SqlDataReader reader=com.ExecuteReader())
                    {
                        if (reader.HasRows)
                        {
                            //聲明一字節(jié)數(shù)組   將數(shù)據(jù)庫(kù)中的圖片現(xiàn)存入字節(jié)數(shù)組中
                            byte[] imageByte;
							//在這我是知道里面就一張圖,所以這么寫(xiě)的,個(gè)人根據(jù)實(shí)際情況,可做修改
                           while(reader.Read())
                            {
                                //將圖片轉(zhuǎn)換為字節(jié)數(shù)組
                                imageByte = (byte[])reader["UserImage"];

                                //轉(zhuǎn)換為文件流
                                MemoryStream stream = new MemoryStream(imageByte);
                                //再將文件流 轉(zhuǎn)換為 圖像
                                Bitmap bitmap = new Bitmap(stream);
                                pictureBox1.Image = bitmap;
                            }
                        }
                    }
                }
            }
        }
    }
}

到此這篇關(guān)于sql server實(shí)現(xiàn)圖片的存入和讀取的流程詳解的文章就介紹到這了,更多相關(guān)sql server圖片存入和讀取內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • sqlserver 2000 遠(yuǎn)程連接 服務(wù)器的解決方案

    sqlserver 2000 遠(yuǎn)程連接 服務(wù)器的解決方案

    在連接本地服務(wù)器時(shí),通常使用的是命名管道協(xié)議(在服務(wù)器網(wǎng)絡(luò)實(shí)用工具里可以看到啟用的協(xié)議有這個(gè)
    2009-06-06
  • SQL?Server刪除正在恢復(fù)數(shù)據(jù)庫(kù)的三種方法

    SQL?Server刪除正在恢復(fù)數(shù)據(jù)庫(kù)的三種方法

    本文介紹了三種刪除卡住的SQL?Server數(shù)據(jù)庫(kù)的方法:嘗試完成恢復(fù)后再刪除、強(qiáng)制終止恢復(fù)進(jìn)程并刪除、以及強(qiáng)制離線后刪除,每種方法都有其適用場(chǎng)景和注意事項(xiàng),需要的朋友可以參考下
    2026-03-03
  • SQL中PIVOT函數(shù)的用法小結(jié)

    SQL中PIVOT函數(shù)的用法小結(jié)

    PIVOT 是 SQL Server 中的一個(gè)功能,用于將行轉(zhuǎn)換為列,本文主要介紹了SQL中PIVOT函數(shù)的用法小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07
  • sql 游標(biāo)使用筆記

    sql 游標(biāo)使用筆記

    sql 游標(biāo)使用筆記,需要的朋友可以參考下。
    2011-04-04
  • sqlserver中創(chuàng)建鏈接服務(wù)器圖解教程

    sqlserver中創(chuàng)建鏈接服務(wù)器圖解教程

    鏈接服務(wù)器在跨數(shù)據(jù)庫(kù)/跨服務(wù)器查詢時(shí)非常有用(比如分布式數(shù)據(jù)庫(kù)系統(tǒng)中),本文將以圖文方式詳細(xì)說(shuō)明如何利用SQL Server Management Studio在圖形界面下創(chuàng)建鏈接服務(wù)器。
    2010-09-09
  • Mybatis中處理特殊SQL處理邏輯解析

    Mybatis中處理特殊SQL處理邏輯解析

    這篇文章主要介紹了Mybatis中處理特殊SQL處理邏輯,在MyBatis中可能會(huì)有一些特殊的SQL需要去執(zhí)行,一般就是模糊查詢、批量刪除、動(dòng)態(tài)設(shè)置表名、添加功能獲取自增的主鍵這幾種,現(xiàn)在分別來(lái)進(jìn)行說(shuō)明,需要的朋友可以參考下
    2023-06-06
  • MSSQL MySQL 數(shù)據(jù)庫(kù)分頁(yè)(存儲(chǔ)過(guò)程)

    MSSQL MySQL 數(shù)據(jù)庫(kù)分頁(yè)(存儲(chǔ)過(guò)程)

    有關(guān)分頁(yè) SQL 的資料很多,有的使用存儲(chǔ)過(guò)程,有的使用游標(biāo)。本人不喜歡使用游標(biāo),我覺(jué)得它耗資、效率低;使用存儲(chǔ)過(guò)程是個(gè)不錯(cuò)的選擇,因?yàn)榇鎯?chǔ)過(guò)程是經(jīng)過(guò)預(yù)編譯的,執(zhí)行效率高,也更靈活
    2012-01-01
  • SQL Server利用bcp命令把SQL語(yǔ)句結(jié)果生成文本文件

    SQL Server利用bcp命令把SQL語(yǔ)句結(jié)果生成文本文件

    在SQL Server里可以調(diào)用DOS下的命令行工具bcp來(lái)實(shí)現(xiàn)把表里的數(shù)據(jù)或者SQL語(yǔ)句結(jié)果生成文本文件,詳細(xì)看下操作方法,感興趣的你可不要錯(cuò)過(guò)了哈
    2013-02-02
  • sql server實(shí)現(xiàn)分頁(yè)的方法實(shí)例分析

    sql server實(shí)現(xiàn)分頁(yè)的方法實(shí)例分析

    這篇文章主要介紹了sql server實(shí)現(xiàn)分頁(yè)的方法,結(jié)合實(shí)例形式總結(jié)分析了SQL Server實(shí)現(xiàn)分頁(yè)功能的常用sql語(yǔ)句,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2017-03-03
  • 修復(fù)SQL Server數(shù)據(jù)庫(kù)中的恢復(fù)掛起狀態(tài)的方法總結(jié)

    修復(fù)SQL Server數(shù)據(jù)庫(kù)中的恢復(fù)掛起狀態(tài)的方法總結(jié)

    SQL 服務(wù)器恢復(fù)掛起可能是因?yàn)樵诮馕鰯?shù)據(jù)庫(kù)中的某些事務(wù)期間系統(tǒng)關(guān)閉不當(dāng),在本文中,將向你提供各種方法來(lái)修復(fù) SQL Server 數(shù)據(jù)庫(kù)中的恢復(fù)掛起狀態(tài),需要的朋友可以參考下
    2024-03-03

最新評(píng)論

南充市| 嘉禾县| 连城县| 太仓市| 宁化县| 固原市| 怀化市| 特克斯县| 建昌县| 资讯 | 陇西县| 白银市| 福鼎市| 镇宁| 宁晋县| 台东县| 襄樊市| 青岛市| 汾西县| 辽宁省| 团风县| 会昌县| 雅江县| 梁河县| 青阳县| 肥西县| 青河县| 保亭| 宜兰市| 定兴县| 盈江县| 开化县| 瓦房店市| 綦江县| 龙门县| 文成县| 桂阳县| 西青区| 定边县| 剑河县| 丰城市|