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

来源:互联网 发布:windows 98 编辑:程序博客网 时间:2024/05/22 04:53

功能介绍:

通常,在我们开发时时,如何需要将文件保存到数据库中,我们会将该字段设置成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("导出文件成功");
            }
        }

 

 

 

 

 

 

原创粉丝点击