CSharp将任何文件转成字符串保存到数据

功能介绍:

通常,在我们开发时时,如何需要将文件保存到数据库中,我们会将该字段设置成IMAGE格式,即以二进制的形式保存。

这就存在一个问题,以二进制形式保存后的数据库,在导出或者备份数据时,无法将该字段导出成SQL语句。

下面介绍的是将任何文件转化成串的形式保存到数据库中,然后就可以将将数据库中的数据导出到XML等格式了。

你可以从些处下载源码:  将文件转成字符串并保存到数据库中

数据库结构:

 

CREATE TABLE [dbo].[t_Test] (
 [ID] [int] IDENTITY (1, 1) NOT NULL ,
 [filename] [nvarchar] (250) COLLATE Chinese_PRC_CI_AS NULL ,
 [FileStream] [image] NULL ,
 [FileString] [ntext] COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

 

一、将文件保存到数据库

//将图片存入字节数组中
            System.IO.FileStream MyFs1 = new System.IO.FileStream(this.textBox1.Text, System.IO.FileMode.Open, System.IO.FileAccess.Read);
            byte[] MyData = new byte[MyFs1.Length];
           
            MyFs1.Read(MyData, 0, System.Convert.ToInt32(MyFs1.Length));
            MyFs1.Close();


            Model_t_Test model = new Model_t_Test();
            model.filename =System.IO.Path.GetFileName( this.textBox1.Text);
            model.FileStream = MyData;

           // byte[] buf = MyData.ToArray();

            string ssss = Convert.ToBase64String(MyData);

 

            model.FileString = ssss;
            DAL_t_test dal = new DAL_t_test();
           int re= dal.Add(model);
           if(re>0)
            {
               
                MessageBox.Show("添加记录成功");
            }
           else
            {

                MessageBox.Show("添加记录成功");
            }
        }

 

 

二、将数据库中IMAGE字段的文件转化成文件

 int r=  this.dataGridView1.CurrentRow.Index;

          string ID = this.dataGridView1.Rows[r].Cells[0].Value.ToString();
            DAL_t_test  dal=new DAL_t_test();

            Model_t_Test model = dal.GetModel(int.Parse(ID));
          
            System.IO.MemoryStream ms = new System.IO.MemoryStream(model.FileStream);

            if (ms.Length <= 0)
            {
                MessageBox.Show("没有文档!!!");
                return;
            }
            //将内存流保存到文件流
            if (System.IO.File.Exists(model.filename ) == true)
            {
                System.IO.File.Delete(model.filename);
            }
            System.IO.FileStream aa = new System.IO.FileStream(model.filename, System.IO.FileMode.OpenOrCreate);

            ms.WriteTo(aa);// '将内存流写入到文件流中
            aa.Close();
            MessageBox.Show("导出文件成功");
            ms = null;

            //打开WORD文档
            System.Diagnostics.Process MyPro = new System.Diagnostics.Process();
            MyPro.StartInfo.FileName = model.filename;
            MyPro.StartInfo.Verb = "Open";
            MyPro.Start();

 

 

三、将Ntext字段的内容转化成文件

 int r = this.dataGridView1.CurrentRow.Index;

            string ID = this.dataGridView1.Rows[r].Cells[0].Value.ToString();
            DAL_t_test dal = new DAL_t_test();

            Model_t_Test model = dal.GetModel(int.Parse(ID));
            byte[] MyData = DbHelperSQL.strToByte(model.FileString);
            System.IO.MemoryStream ms = new System.IO.MemoryStream(MyData);

            if (MyData.Length <= 0)
            {
                MessageBox.Show("没有文档!!!");
                return;
            }
            //将内存流保存到文件流
            if (System.IO.File.Exists(model.filename) == true)
            {
                System.IO.File.Delete(model.filename);
            }
            System.IO.FileStream aa = new System.IO.FileStream(model.filename, System.IO.FileMode.OpenOrCreate);

            ms.WriteTo(aa);// '将内存流写入到文件流中
            aa.Close();
            MessageBox.Show("导出文件成功");
            ms = null;

            //打开WORD文档
            System.Diagnostics.Process MyPro = new System.Diagnostics.Process();
            MyPro.StartInfo.FileName = model.filename;//导出到当前目录下
            MyPro.StartInfo.Verb = "Open";
            MyPro.Start();

 

四、将数据库导出成XML文件

 private void btnSqveToXML_Click(object sender, EventArgs e)
        {
            if (this.saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                DAL_t_test dal = new DAL_t_test();

                DataTable dt = dal.GetALLList("").Tables[0];
                dt.WriteXml(this.saveFileDialog1.FileName );
                MessageBox.Show("导出文件成功");
            }
        }

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xjzdr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值