如何在数据库中同时保存文本和图片

一篇论文有文字和图片,如何才能同时写入数据库,如何才能同时读出并显示图文并茂... 一篇论文有文字和图片,如何才能同时写入数据库,如何才能同时读出并显示图文并茂 展开
 我来答
dong_1984dd
2015-08-13 · TA获得超过1.1万个赞
知道小有建树答主
回答量:1070
采纳率:100%
帮助的人:226万
展开全部
  1. 向数据库中保存不同类型的文件,和在数据库中保存图片是一样的。就是向数据库以byte形式存入

  2. 向数据库中保存不同类型的文件,和在数据库中保存图片是一样的。就是向数据库以byte形式存入

  3. 然后就是写入数据库,代码如下:

     

FileInfo fi = new FileInfo( txtFileName.Text );// Replace with your file name
        if ( fi.Exists
        {
         byte[] bData = null;

            int nNewFileID = 0;

            // Read file data into buffer

            using ( FileStream fs = fi.OpenRead() )
            {

                bData = new byte[fi.Length];

                int nReadLength = fs.Read( bData,0, (int)(fi.Length) );

            }

            // Add file info into DB

            string strQuery = "INSERT INTO FileInfo "

                + " ( FileName, FullName, FileData ) "

                + " VALUES "

                + " ( @FileName, @FullName, @FileData ) "

                + " SELECT @@IDENTITY AS 'Identity'";

            SqlCommand sqlComm = new SqlCommand( strQuery, sqlConn );

            sqlComm.Parameters.Add( "@FileName", fi.Name );

            sqlComm.Parameters.Add( "@FullName", fi.FullName );

            sqlComm.Parameters.Add( "@FileData", bData );
            // Get new file ID

            SqlDataReader sqlReader = sqlComm.ExecuteReader();

            if( sqlReader.Read() )

            {

                nNewFileID = int.Parse(sqlReader.GetValue(0).ToString());

            }
            sqlReader.Close();
            sqlComm.Dispose();

            if( nNewFileID > 0 )
            {
                // Add new item in list view

                ListViewItem itmNew = lsvFileInfo.Items.Add( fi.Name );

                itmNew.Tag = nNewFileID;
            }
        }

   4.而读出的代码如下:

 // Get new file name

    string strFullName =
dlgFBSave.SelectedPath;

    if( strFullName[strFullName.Length - 1] != '//'
)

        strFullName
+= @"/";

    strFullName +=
lsvFileInfo.SelectedItems[0].Text;

    string strQuery = "SELECT FileData FROM FileInfo
"

        +
" WHERE FileID = " + lsvFileInfo.SelectedItems[0].Tag.ToString();

    SqlDataAdapter
sqlDAdapter = new SqlDataAdapter(strQuery,sqlConn);

    DataSet
sqlRecordSet = new DataSet();

   byte[] bData = null;

    //Get file data from DB

    try

    {

        sqlDAdapter.Fill(
sqlRecordSet, "FileInfo" );

        foreach( DataRow dr in sqlRecordSet.Tables["FileInfo"].Rows)

        {

            if( dr["FileData"] != DBNull.Value )

            bData
= ( byte[] )dr["FileData"];

        }

    }

    catch(SqlException sqlErr)

    {

        MessageBox.Show(
sqlErr.Message );

    }

    catch

    {

        MessageBox.Show(
"Failed to read data from DB!" );

    }

    sqlRecordSet.Dispose();

    sqlDAdapter.Dispose();

 

    if( bData != null )

    {

        // Save file

        FileInfo
fi = new FileInfo( strFullName
);

        if( !fi.Exists )

        {

            //Create the file.

            using (FileStream fs = fi.Create())

            {

                fs.Write(
bData, 0, bData.Length);

            }

        }

        else

        {

            //Create the file.

            using (FileStream fs =
fi.OpenWrite())

            {

                fs.Write(
bData, 0, bData.Length);

            }

        }

    }

sodu11
2010-11-20 · TA获得超过307个赞
知道小有建树答主
回答量:415
采纳率:0%
帮助的人:281万
展开全部
数据库不是万能的.所以不能保存图片.只能保存图片的路径.你只能把图片放在文件夹里.把图片的路径放在数据库里,这样才能做到你所说的同时读出显示图文并茂
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jkchenwo
2010-11-20 · TA获得超过4300个赞
知道小有建树答主
回答量:1019
采纳率:0%
帮助的人:553万
展开全部
下面的答案都不是很好,可以用编辑器,编辑器就能很好的保存图片和文字到数据库,因为保存的是html代码到数据库,至于显示,至于用Literal控件就ok了,至于还有没有其他的控件,我就不说了,好用的编辑器有Fckeditor,而且能上传图片到服务器,至于上传过的图片,不管你以后是否删除都可以用,比如网上的,本机的图片没有了,依旧可以显示
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ProgramCreator
2010-11-20
知道答主
回答量:14
采纳率:0%
帮助的人:0
展开全部
将文字和图片一起转换为二进制流,写入数据库。

读取的时候将二进制流转换回来就可以了
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
luanqun
2010-11-20 · TA获得超过1003个赞
知道小有建树答主
回答量:290
采纳率:0%
帮助的人:202万
展开全部
2楼说的可以
但你为啥要把图片也存库里呢,存个图片地址不就不用那么费劲了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式