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

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
C語言教程:將二進制流寫入數(shù)據(jù)庫的方法(c將二進制流寫入數(shù)據(jù)庫)

在現(xiàn)代的軟件系統(tǒng)中,數(shù)據(jù)庫是至關(guān)重要的組成部分。它們用于存儲和檢索數(shù)據(jù),支持公司和組織的關(guān)鍵任務(wù)。與傳統(tǒng)的文本和數(shù)字數(shù)據(jù)類型不同,二進制數(shù)據(jù)類型(例如圖像和音頻文件)需要特殊處理才能在數(shù)據(jù)庫中存儲和讀取。在本教程中,我們將介紹使用C語言將二進制流寫入數(shù)據(jù)庫的方法。

10年的岳麓網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。網(wǎng)絡(luò)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整岳麓建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)公司從事“岳麓網(wǎng)站設(shè)計”,“岳麓網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。

一、選擇合適的數(shù)據(jù)庫類型

確定要使用的數(shù)據(jù)庫類型。這將有助于您選擇適當?shù)膸旌凸ぞ?。在本教程中,我們將討論使用MySQL數(shù)據(jù)庫的C語言編程。MySQL是一種流行的客戶端/服務(wù)器數(shù)據(jù)庫管理系統(tǒng),具有卓越的性能和可擴展性。

二、準備你的代碼

在您開始編寫代碼之前,您需要先定義二進制數(shù)據(jù)類型的存儲位置和大小。可以使用您的MySQL安裝程序提供的MySQL Workbench。這將允許您輕松地創(chuàng)建和管理數(shù)據(jù)庫,定義表和列以及在表中添加數(shù)據(jù)。在我們的示例代碼中,我們使用以下代碼定義包含二進制數(shù)據(jù)的表:

“`

CREATE TABLE `binary_files` (

`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,

`filename` VARCHAR(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ”,

`mime_type` VARCHAR(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT ”,

`data` LONGBLOB NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

“`

三、編寫代碼以讀取二進制數(shù)據(jù)

一旦您確定了數(shù)據(jù)庫和表結(jié)構(gòu),您將可以編寫代碼。接下來,我們將介紹如何使用C語言編寫代碼以讀取二進制數(shù)據(jù),并將其寫入表中創(chuàng)建的列。

步驟1:

使用mysql_init()函數(shù)初始化MySQL句柄。該句柄允許C語言程序與MySQL交互。

“`

MYSQL* mysql = mysql_init(NULL);

“`

步驟2:

使用mysql_real_connect()函數(shù)建立到數(shù)據(jù)庫的連接。此函數(shù)使用數(shù)據(jù)庫的名稱、用戶名和密碼作為參數(shù)。

“`

mysql_real_connect(mysql, “l(fā)ocalhost”, “user”, “password”, “database”, 0, NULL, 0);

“`

步驟3:

使用fopen()函數(shù)打開要讀取的二進制文件。

“`

FILE* file = fopen(“image.jpg”, “rb”);

“`

步驟4:

使用fread()函數(shù)從文件中讀取數(shù)據(jù)。

“`

fread(buffer, 1, 1024, file);

“`

步驟5:

使用mysql_real_escape_string()函數(shù)將讀取的數(shù)據(jù)轉(zhuǎn)義,然后使用mysql_query()函數(shù)將它們寫入數(shù)據(jù)庫表中的指定列。

“`

char* escaped_data = malloc((1024 * 2) + 1);

mysql_real_escape_string(mysql, escaped_data, buffer, 1024);

char* query = “INSERT INTO binary_files (filename, mime_type, data) VALUES(‘image.jpg’, ‘image/jpeg’, ‘%s’)”;

char* escaped_query = calloc(strlen(query) + (1024 * 2) + 1, sizeof(char));

sprintf(escaped_query, query, escaped_data);

mysql_query(mysql, escaped_query);

“`

步驟6:

使用fclose()函數(shù)關(guān)閉打開的文件。

“`

fclose(file);

“`

四、

本教程介紹了使用C語言將二進制流寫入數(shù)據(jù)庫的步驟。這是一個重要的主題,因為二進制數(shù)據(jù)類型在現(xiàn)代軟件系統(tǒng)中越來越常見。使用MySQL和C語言編程的示例代碼可以幫助您了解如何實現(xiàn)這一目標。無論您是新手還是經(jīng)驗豐富的開發(fā)人員,我們希望這個教程都能為您提供有用的信息。

成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗豐富以策略為先導(dǎo)10多年以來專注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計,響應(yīng)式網(wǎng)站制作,設(shè)計師量身打造品牌風格,熱線:028-86922220

.net怎樣將圖片以二進制流的方式存入Oracle數(shù)據(jù)庫里 在以二進制流的方式讀取顯示 求源碼

在oracle中可以使用bolb字段類型進行二進制流的存儲

Java代碼:

Oracle中插入圖片并顯示(用BLOB類型)

要在oracle里面銀正模存入圖片 用 blob類型

首先在數(shù)據(jù)庫里建立:

–連接到管理員

conn sys/tbsoft as sysdba;

–為scott用戶授權(quán)

grant create any directory to scott;

–回到scott用戶

conn scott/tiger;

–創(chuàng)建存儲圖片的表

CREATE TABLE IMAGE_LOB (T_ID VARCHAR2 (5) NOT NULL,T_IMAGE BLOB NOT NULL);

–創(chuàng)建存儲圖片的目錄

CREATE OR REPLACE DIRECTORY IMAGES AS ‘C:\picture’;

–在c:下自己建一個叫picture的文件夾

CREATE OR REPLACE PROCEDURE IMG_INSERT (TID VARCHAR2,FILENAME VARCHAR2) AS

F_LOB BFILE;–文件類型

B_LOB BLOB;

BEGIN

iNSERT INTO IMAGE_LOB (T_ID, T_IMAGE)

VALUES (TID,EMPTY_BLOB ()) RETURN T_IMAGE INTO B_LOB;

–插入空的blob

F_LOB:= BFILENAME (‘IMAGES’, FILENAME);

–獲取指定目錄下的文件

DBMS_LOB.FILEOPEN(F_LOB, DBMS_LOB.FILE_READON);

–以只讀的方式打開文件

DBMS_LOB.LOADFROMFILE (B_LOB, F_LOB,DBMS_LOB.GETLENGTH (F_LOB));

–傳遞對象

DBMS_LOB.FILECLOSE (F_LOB);

–關(guān)閉原始文件

COMMIT;

END;

/

–在C:\picture下放一張圖片1.gif

–將該圖片存入表

call IMG_INSERT(‘1′,’1.gif’);

然后創(chuàng)清悔建一個web項目 連接數(shù)據(jù)庫后 創(chuàng)建一個BlobDAO類 用來取出表中的blob類型圖片

Java代碼 收藏代鋒緩碼

public class BlobDAO {

private static final BlobDAO instance = new BlobDAO();

private Connection conn = null;

private BlobDAO() {

}

public static BlobDAO getInstance() {

return instance;

}

private void initConn() {

conn = DBAccess.getInstance().getConn();

}

public byte getImage(String imgname) {

BufferedInputStream ins;//取得BLOB的IO流

byte bt = null;

initConn();

Blob bo = null;

PreparedStatement ps = null;

ResultSet rs = null;

String sql = “select T_IMAGE from IMAGE_LOB where t_id=?”;

try {

ps = conn.prepareStatement(sql);

ps.setString(1, imgname);

rs = ps.executeQuery();

if (rs.next()) {

bo = rs.getBlob(“T_IMAGE”);

try {

ins = new BufferedInputStream(bo.getBinaryStream());

int bufferSize = (int) bo.length();//取得BLOB的長度

bt = new byte;

try {

ins.read(bt, 0, bufferSize);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

//建立字節(jié)緩存

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} finally {

try {

rs.close();

ps.close();

conn.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

return bt;

}

}

在action里面調(diào)用getImage()方法并顯示圖片在頁面上

Java代碼 收藏代碼

public ActionForward execute(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response) {

// TODO Auto-generated method stub

BlobDAO blobDAO = BlobDAO.getInstance();

byte bs = blobDAO.getImage(“1”);

try {

response.getOutputStream().write(bs);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return null;

}

添加圖片到數(shù)據(jù)庫

請在c盤下放入圖片–c:\\4.gif

Java代碼 收藏代碼

public void savaImg(String imgId) {

//傳的是存入數(shù)據(jù)庫圖片的id

initConn();

Statement st = null;

BLOB blob = null; //圖片類型

OutputStream outputStream = null; //輸出流

File file = null; //文件

InputStream inputStream = null; //輸入流

ResultSet rs = null;

try {

conn.setAutoCommit(false); //事物由程序員操作

st = conn.createStatement();

st.executeQuery(“insert into IMAGE_LOB values(‘”+ imgId +”‘,empty_blob())”);

rs = st.executeQuery(“select T_IMAGE from IMAGE_LOB where t_id='”+ imgId +”‘ for update”);

if (rs.next()) {

blob = (BLOB) rs.getBlob(1);

outputStream = blob.getBinaryOutputStream();

file = new File(“c:\\4.gif”);

inputStream = new FileInputStream(file);

byte b = new byte;

int len = 0;

while ((len = inputStream.read(b)) != -1) {

System.out.println(len);

outputStream.write(b, 0, len);

}

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} finally {

try {

inputStream.close();

outputStream.flush();

outputStream.close();

rs.close();

st.close();

conn.commit();

conn.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

c 將二進制流寫入數(shù)據(jù)庫的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于c 將二進制流寫入數(shù)據(jù)庫,C語言教程:將二進制流寫入數(shù)據(jù)庫的方法,.net怎樣將圖片以二進制流的方式存入Oracle數(shù)據(jù)庫里 在以二進制流的方式讀取顯示 求源碼的信息別忘了在本站進行查找喔。

創(chuàng)新互聯(lián)【028-86922220】值得信賴的成都網(wǎng)站建設(shè)公司。多年持續(xù)為眾多企業(yè)提供成都網(wǎng)站建設(shè),成都品牌建站設(shè)計,成都高端網(wǎng)站制作開發(fā),SEO優(yōu)化排名推廣服務(wù),全網(wǎng)營銷讓企業(yè)網(wǎng)站產(chǎn)生價值。


網(wǎng)頁題目:C語言教程:將二進制流寫入數(shù)據(jù)庫的方法(c將二進制流寫入數(shù)據(jù)庫)
新聞來源:http://www.5511xx.com/article/cdoiedp.html