大数据在数据库中的存储
2013-07-09 20:07
176 查看
大数据在数据库中的存储简单点就是两个方法能实现即可 ,一个是把数据上传到数据库中 另一个就是把数据从数据库中取出来
为了方便理解我就举一个简单的windows窗体应用程序例子实现上传下载的功能 (电影的上传与下载)
这个是设计好的界面 具体怎么做我就不再罗嗦了
我们就先看一下浏览的button按钮是怎么实现的
接下来就该是重点了 我们的上传的button按钮
看到了没有 上传按钮关于上传的什么代码也没有仅仅只是调用的一个上传的方法UploadFileToDB();
接下来我们再看看 下载的功能
也是调用了一个下载DowmFileFromDB();方法
为了方便理解我就举一个简单的windows窗体应用程序例子实现上传下载的功能 (电影的上传与下载)
这个是设计好的界面 具体怎么做我就不再罗嗦了
我们就先看一下浏览的button按钮是怎么实现的
private void btnBrowser_Click(object sender, EventArgs e) { OpenFileDialog openDlg = new OpenFileDialog(); openDlg.Filter = "视频文件|*.wmv;*.mp4;*.avi"; if (openDlg.ShowDialog() != DialogResult.OK) return; this.lblFileName.Text = openDlg.FileName; //this.mediaPlayer.URL = this.lblFileName.Text; }这个就是从你的各种存储介质中获取的视频文件 然后把得到的文件的完整路径交给我们的文本框去保存 留着下面做上传的时候是非常有用的
接下来就该是重点了 我们的上传的button按钮
private void btnUpload_Click(object sender, EventArgs e) { if (this.lblFileName.Text == "") return; if (this.UploadFileToDB(this.lblFileName.Text)) { MessageBox.Show("完成上传"); } }
看到了没有 上传按钮关于上传的什么代码也没有仅仅只是调用的一个上传的方法UploadFileToDB();
private bool UploadFileToDB(string fileName) { string cnnString = "server=.;database=LargeDataDB;uid=sa;pwd=123456"; string cmdText = "usp_Videos_Insert";//这个是存储过程如果要写成sql语句也是可以的就是把下面的CommandType.StoredProcedure;改为Text即可 SqlConnection cnn = new SqlConnection(cnnString); cnn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = cnn; cmd.CommandText = cmdText; cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("@FileName", SqlDbType.VarChar).Value = fileName.Substring(fileName.LastIndexOf(@"\")+1);//获取文件的名字 FileStream stream = new FileStream(fileName, FileMode.Open);//创建一个文件流 byte[] buffer = new byte[stream.Length]; stream.Read(buffer, 0, buffer.Length); stream.Close(); cmd.Parameters.Add("@Data", SqlDbType.Image).Value = buffer;//把获取到的二进制数据给存储过程中的Data参数 int rowCount = cmd.ExecuteNonQuery(); cnn.Close(); if (rowCount > 0) { return true; } else { return false; } }如果是文件太大最好再加上多线程的技术 能避免主线程的死锁
接下来我们再看看 下载的功能
private void btnDownload_Click(object sender, EventArgs e) { int id = int.Parse(this.txtID.Text); string fileName = this.DownFileFromDB(id); if (fileName != string.Empty) { this.mediaPlayer.URL = fileName;//把获取到的 } }
也是调用了一个下载DowmFileFromDB();方法
private string DownFileFromDB(int id) { string cnnString = "server=.;database=LargeDataDB;uid=sa;pwd=master"; string cmdText = "select FileName,Data from Videos where ID=@ID";//这里面的参数是通过ID来获取想要下载的文件 SqlConnection cnn = new SqlConnection(cnnString); cnn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = cnn; cmd.CommandText = cmdText; cmd.CommandType = CommandType.Text; cmd.Parameters.Add("@ID", SqlDbType.Int).Value = id; SqlDataReader reader = cmd.ExecuteReader(); string fileName = string.Empty; byte[] buffer = null; while (reader.Read()) { fileName = (string)reader["FileName"]; fileName = "D:\\" + fileName; buffer = (byte[])reader["Data"]; FileStream stream = new FileStream(fileName, FileMode.Create);//把从数据库中取出来的二进制数据写入硬盘之中 stream.Write(buffer,0,buffer.Length); stream.Close(); } return fileName; }好了上传下载就到这里了我们来看一看效果此文仅仅是为了实现上传下载的功能代码有点简陋没有把使用分层结构去实现,望大家见谅!这个不仅仅可以存放视频 数据库中的 image类型可以存放所有的二进制文件 。此文仅为抛砖引玉 大牛的设计不知道比我的好多少呢 谢谢大家的支持!
相关文章推荐
- Android 存储数据之 SQLite 数据库
- 大数据时代的数据存储,非关系型数据库MongoDB
- Android游戏开发13:SQLite存储数据及保存SQLite数据库文件到SD卡
- 大数据时代的数据存储,非关系型数据库MongoDB
- 论文《固态硬盘混合存储数据库的数据分布优化算法 》总结
- 数据存储详解(三)---->数据库存储
- 大数据时代的数据存储,非关系型数据库MongoDB
- [转]SQLSERVER存储过程调用不同数据库的数据_存储过程中通过链接服务器访问远程服务器
- 以学生表为例理解RDBMS(关系型数据库)到 hbase 数据存储模式的转变
- 将选定的 OmniFind 分析结果存储到关系数据库中以便进行报告和数据挖掘
- iOS数据库存储数组或字典等数据
- 在数据库中存储层次型数据
- 数据库系统——关系型数据在磁盘上的存储布局
- 如何设计一个数据库中间件(支持百亿级别数据存储)
- 树型结构数据在数据库基本表中的存储及维护
- 数据存储(二): xUtils在数据库中的应用
- 使用libcurl下载网络数据存储到数据库(使用libcurl和sqlite数据库)
- 数据存储之Realm数据库
- 【Android游戏开发十三】(保存游戏数据 [下文])详解SQLite存储方式,并把SQLite的数据库文件存储在SD卡中!!!
- 数据库存储过程中定义一个变量,通过sql语句在数据表中获取这个变量值的方法。