日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
如何在c語(yǔ)言中將圖片存入mysql數(shù)據(jù)庫(kù)(c把圖片存入mysql數(shù)據(jù)庫(kù))

隨著互聯(lián)網(wǎng)的發(fā)展,數(shù)據(jù)存儲(chǔ)和管理已經(jīng)變得越來(lái)越重要。在實(shí)際開(kāi)發(fā)中,有時(shí)需要將圖片存入數(shù)據(jù)庫(kù)中,以便于管理和使用。本文將介紹。

創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括肇州網(wǎng)站建設(shè)、肇州網(wǎng)站制作、肇州網(wǎng)頁(yè)制作以及肇州網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,肇州網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到肇州省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

1. 準(zhǔn)備工作

在開(kāi)始之前,我們需要安裝mysql數(shù)據(jù)庫(kù)和相關(guān)驅(qū)動(dòng)程序。此外,我們還需要一個(gè)c語(yǔ)言開(kāi)發(fā)環(huán)境,如Visual Studio或Code::Blocks。

2. 創(chuàng)建數(shù)據(jù)庫(kù)表格

我們需要?jiǎng)?chuàng)建一個(gè)用于存儲(chǔ)圖片的數(shù)據(jù)庫(kù)表格??梢允褂胢ysql命令行工具或任何mysql客戶端來(lái)完成此操作。

下面是創(chuàng)建數(shù)據(jù)庫(kù)表格的示例代碼:

CREATE TABLE images (

id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,

name VARCHAR(100),

data LONGBLOB

);

該表格包含三列:id、name和data。id列是自動(dòng)遞增的主鍵,用于唯一標(biāo)識(shí)每個(gè)記錄。name列用于存儲(chǔ)圖片的名稱,data列用于存儲(chǔ)圖片的內(nèi)容。我們使用LONGBLOB類型來(lái)存儲(chǔ)二進(jìn)制數(shù)據(jù)。

3. 讀取圖片數(shù)據(jù)

在將圖片存入數(shù)據(jù)庫(kù)之前,我們需要從文件中讀取圖片數(shù)據(jù)。我們可以使用c語(yǔ)言中的文件I/O函數(shù)來(lái)完成此操作。

下面是讀取圖片數(shù)據(jù)的示例代碼:

FILE *fp;

char *buffer;

long fileLen;

fp = fopen(“sample.jpg”, “rb”);

if (!fp) {

fprintf(stderr, “Unable to open file.\n”);

exit(1);

}

fseek(fp, 0, SEEK_END);

fileLen = ftell(fp);

fseek(fp, 0, SEEK_SET);

buffer = (char *)malloc(fileLen + 1);

if (!buffer) {

fprintf(stderr, “Memory error.\n”);

exit(2);

}

fread(buffer, fileLen, 1, fp);

fclose(fp);

在上面的代碼中,我們打開(kāi)一個(gè)名為sample.jpg的文件,并使用fread函數(shù)將其內(nèi)容讀入內(nèi)存中的緩沖區(qū)中。我們使用malloc函數(shù)來(lái)分配足夠的內(nèi)存來(lái)存儲(chǔ)整個(gè)文件,然后在讀取文件后將文件指針關(guān)閉。

4. 將圖片數(shù)據(jù)存入數(shù)據(jù)庫(kù)

我們可以使用mysql C API來(lái)將讀取的圖片數(shù)據(jù)存入數(shù)據(jù)庫(kù)中。該API包含一組函數(shù),為開(kāi)發(fā)人員提供了與mysql數(shù)據(jù)庫(kù)進(jìn)行交互的方法。

下面是將圖片數(shù)據(jù)存入數(shù)據(jù)庫(kù)的示例代碼:

MYSQL *conn;

MYSQL_RES *res;

MYSQL_ROW row;

conn = mysql_init(NULL);

if (!mysql_real_connect(conn, “l(fā)ocalhost”, “username”, “password”, “database”, 0, NULL, 0)) {

fprintf(stderr, “%s\n”, mysql_error(conn));

exit(1);

}

mysql_query(conn, “set names utf8”);

mysql_query(conn, “START TRANSACTION”);

char *query;

query = (char *)malloc(5000 * sizeof(char));

sprintf(query, “INSERT INTO images(name, data) VALUES(‘%s’, ‘%s’)”,

“sample.jpg”, buffer);

if (mysql_query(conn, query)) {

fprintf(stderr, “%s\n”, mysql_error(conn));

mysql_query(conn, “ROLLBACK”);

exit(1);

} else {

mysql_query(conn, “COMMIT”);

printf(“Successfully Inserted\n”);

}

mysql_close(conn);

在上面的代碼中,我們首先使用mysql_init函數(shù)初始化mysql連接句柄。然后,我們使用mysql_real_connect函數(shù)建立與數(shù)據(jù)庫(kù)的連接。我們使用malloc函數(shù)分配足夠的內(nèi)存來(lái)存儲(chǔ)INSERT查詢。接下來(lái),我們將查詢字符串組裝起來(lái)并使用mysql_query函數(shù)執(zhí)行它。我們使用mysql_close函數(shù)關(guān)閉數(shù)據(jù)庫(kù)連接。

5. 結(jié)論

在本文中,我們介紹了。我們討論了如何創(chuàng)建數(shù)據(jù)庫(kù)表格、如何讀取圖片數(shù)據(jù)以及如何使用mysql C API將數(shù)據(jù)存入數(shù)據(jù)庫(kù)中。希望這篇文章對(duì)正在尋找此類解決方案的開(kāi)發(fā)人員有所幫助。

相關(guān)問(wèn)題拓展閱讀:

  • 圖片如何存入數(shù)據(jù)庫(kù)?

圖片如何存入數(shù)據(jù)庫(kù)?

通常對(duì)用戶上傳的圖片需要保存到數(shù)據(jù)庫(kù)中。解決方法一般有兩種:一種是將圖片保存的路徑存儲(chǔ)到數(shù)據(jù)庫(kù);另一種是將圖片以二進(jìn)制數(shù)據(jù)流的形式直接寫(xiě)入數(shù)據(jù)庫(kù)字段中。以下為具體方法:

  一、保存圖片的上傳路徑到數(shù)據(jù)庫(kù):

  string uppath=””;//用于保存圖片上傳路徑

  //獲取上傳圖片的文件名

  string fileFullname = this.FileUpload1.FileName;

  //獲取圖片上傳的時(shí)間,以時(shí)間作為圖片的名字可以防止圖片重名

  string dataName = DateTime.Now.ToString(“yyyyMMddhhmmss”);

  //獲取圖片的文件名(不含擴(kuò)展名)

  string fileName = fileFullname.Substring(fileFullname.LastIndexOf(“\\”) + 1);

  //獲取圖片擴(kuò)展名

  string type = fileFullname.Substring(fileFullname.LastIndexOf(“.”) + 1);

  //判斷是否為要求的格式

  if (type == “bmp” || type == “jpg” || type == “jpeg” || type == “gif” || type == “JPG” || type == “JPEG” || type == “BMP” || type == “GIF”)

  {

  //將圖片上傳到指定路徑的文件夾

  this.FileUpload1.SaveAs(Server.MapPath(“~/upload”) + “\\” + dataName + “.” + type);

  //將路徑保存到變量,將該變量的值保存到數(shù)據(jù)庫(kù)相應(yīng)字段即可

  液櫻uppath = “~/upload/” + dataName + “.” + type;

  }

  二、將圖片以二進(jìn)制數(shù)據(jù)流直接保存到數(shù)據(jù)庫(kù):

  引用如下命名空間:

  using System.Drawing;

  using System.IO;

  using System.Data.SqlClient;

  設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí),表中相應(yīng)的字段類型為iamge

  保存:

  /滲搭/圖片路徑

  string strPath = this.FileUpload1.PostedFile.FileName.ToString ();

  //讀取圖片

  FileStream fs = new System.IO.FileStream(strPath, FileMode.Open, FileAccess.Read);

  BinaryReader br = new BinaryReader(fs);

  byte photo = br.ReadBytes((int)fs.Length);

  br.Close();

  fs.Close();

  //存入

  SqlConnection myConn = new SqlConnection(“Data Source=.;Initial Catalog=stumanage;User ID=sa;Password=123”);

  string strComm = ” INSERT INTO stuInfo(stuid,stuimage) VALUES(107,@photoBinary )”;//操作數(shù)據(jù)庫(kù)語(yǔ)句根據(jù)需要修改

  SqlCommand myComm = new SqlCommand(strComm, myConn);

  myComm.Parameters.Add(“@photoBinary”, SqlDbType.Binary, photo.Length);

  myComm.Parameters.Value = photo;

  myConn.Open();

  if (myComm.ExecuteNonQuery() > 0)

  叢埋拿{

  this.Label1.Text = “ok”;

  }

  myConn.Close();

  讀取:

  …連接數(shù)據(jù)庫(kù)字符串省略

  mycon.Open();

  SqlCommand command = new

  SqlCommand(“select stuimage from stuInfo where stuid=107”, mycon);//查詢語(yǔ)句根據(jù)需要修改

  byte image = (byte)command.ExecuteScalar ();

  //指定從數(shù)據(jù)庫(kù)讀取出來(lái)的圖片的保存路徑及名字

  string strPath = “~/Upload/zhangsan.JPG”;

  string strPhotoPath = Server.MapPath(strPath);

  //按上面的路徑與名字保存圖片文件

  BinaryWriter bw = new BinaryWriter(File.Open(strPhotoPath,FileMode.OpenOrCreate));

  bw.Write(image);

  bw.Close();

  //顯示圖片

  this.Image1.ImageUrl = strPath;

  采用倆種方式可以根據(jù)實(shí)際需求靈活選擇。

1、新建一個(gè)數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)名為Image,表名為image。并為表添加ID,tupian兩個(gè)列。

2、新建一個(gè)項(xiàng)目(Photo),在工具箱中往窗體中拖入一個(gè)PictureBox控件,兩個(gè)Button按鈕,一個(gè)OpenFileDialog控件。并修改pictureBox1控件的屬性BorderStyle為FixedSingle,SizeMode為StretchImage;修改兩個(gè)button控件屬性的Text值依次為”打開(kāi)一張圖片”“插入數(shù)據(jù)庫(kù)”。

3、首先打開(kāi)“數(shù)據(jù)“選擇“添加新數(shù)據(jù)源”,然后(數(shù)據(jù)庫(kù))下一步,(

數(shù)據(jù)集

)下一步,選擇”新建連接“,依次選擇服務(wù)器名,服務(wù)器驗(yàn)證方式,選擇”選擇或輸入一個(gè)數(shù)據(jù)庫(kù)名。

4、選擇”選擇或輸入一個(gè)數(shù)據(jù)庫(kù)名,添加剛剛新建的數(shù)據(jù)庫(kù),然碼橘后點(diǎn)擊“測(cè)試檔培連接”,看看數(shù)據(jù)庫(kù)連接是否成功。成功后點(diǎn)“確定”回到“數(shù)據(jù)源配置向?qū)А表?yè)面,將“連接

字符串

復(fù)制下來(lái)。

5、行模唯添加兩條using

命名空間

using System.IO;  using System.Data.SqlClient;作用為讀取

二進(jìn)制

數(shù)據(jù)流,用于數(shù)據(jù)庫(kù)的連接。

6、編輯Button按鈕“打開(kāi)一張圖片”的Click事件。

關(guān)于c 把圖片存入mysql數(shù)據(jù)庫(kù)的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

成都創(chuàng)新互聯(lián)科技有限公司,是一家專注于互聯(lián)網(wǎng)、IDC服務(wù)、應(yīng)用軟件開(kāi)發(fā)、網(wǎng)站建設(shè)推廣的公司,為客戶提供互聯(lián)網(wǎng)基礎(chǔ)服務(wù)!
創(chuàng)新互聯(lián)(www.cdcxhl.com)提供簡(jiǎn)單好用,價(jià)格厚道的香港/美國(guó)云服務(wù)器和獨(dú)立服務(wù)器。創(chuàng)新互聯(lián)——四川成都IDC機(jī)房服務(wù)器托管/機(jī)柜租用。為您精選優(yōu)質(zhì)idc數(shù)據(jù)中心機(jī)房租用、服務(wù)器托管、機(jī)柜租賃、大帶寬租用,高電服務(wù)器托管,算力服務(wù)器租用,可選線路電信、移動(dòng)、聯(lián)通機(jī)房等。


文章題目:如何在c語(yǔ)言中將圖片存入mysql數(shù)據(jù)庫(kù)(c把圖片存入mysql數(shù)據(jù)庫(kù))
鏈接分享:http://m.5511xx.com/article/dheojgh.html