SQL2012之FileTable与C#的联合应用
关于FileTable是什么,请猛击如下链接:http://technet.microsoft.com/zh-cn/library/ff929144(v=SQL.110).aspx;如您已知道,请跳过。
关于如何启用FileTable功能,请猛击如下链接:http://technet.microsoft.com/zh-cn/library/gg509097.aspx;
关于如何创建、修改和删除FileTable,请猛击如下链接:http://technet.microsoft.com/zh-cn/library/gg509088.aspx。
欲了解更多FileTable特性及支持,请点击以上链接页面页底的相关任务部分(如图):

在上面的截图中用红色框框圈出的部分,将是本文的重点部分。在新建FileTable后,右击并选择“浏览FileTable目录”,如下图:


没错,也许您已想到,这就是所谓的FileTable支持Windows I/O API操作,这样我们就可以利用System.IO命名空间下的FileInfo类中的Move、Copyto等函数实现利用FileTable上传文件的功能。下面我们将实现如何在C#程序中实现这点:
1.首先要获取到FileTable表的RootPath(也就是上图中圈出的网络路径),就这一点我们可以T-SQL中的函数FileTableRootPath(),比如说我建的FileTable名为MyFirstFileTable,那么T-SQL如下便可获取其RootPath:
select FileTableRootPath('MyFirstFileTable') as Path
2.RootPath获取后我们就可以在C#程序中实现了,如下代码:
/// <summary>
/// Upload files by FileTable
/// </summary>
/// <param name="strFilePath">the path of target file</param>
public void UploadbyFileTable(string strFilePath)
{
if (!File.Exists(strFilePath))
return;
FileInfo file = new FileInfo(strFilePath);
string strDBConnection = "Server=your server name/IP,initial catalog=your database name,User id=your id,passord=your password";
string strFileTableName = "your FileTable's name";
string strRootPath = GetFileTableRootPath(strDBConnection, strFileTableName);
if (File.Exists(Path.Combine(strRootPath, file.Name)))
{
return;
}
file.MoveTo(Path.Combine(strRootPath, file.Name));
} /// <summary>
/// Get your Filetable's RootPath
/// </summary>
/// <param name="strDBConnection">your DB connection string</param>
/// <param name="strFileTableName">your FileTable name</param>
/// <returns>your Filetable's RootPath</returns>
public string GetFileTableRootPath(string strDBConnection,string strFileTableName)
{
string strRootPath = string.Empty;
try
{
SqlConnection sqlCon = new SqlConnection(strDBConnection);
sqlCon.Open();
StringBuilder sb = new StringBuilder();
sb.AppendFormat("select FileTableRootPath('{0}') as [path]", strFileTableName);
SqlCommand sqlCmd = new SqlCommand(sb.ToString(), sqlCon);
SqlDataAdapter sqlDa = new SqlDataAdapter(sqlCmd);
DataTable dt = new DataTable();
sqlDa.Fill(dt);
strRootPath = dt.Rows[][].ToString();
sqlDa.Dispose();
sqlCmd.Dispose();
sqlCon.Close();
}
catch(Exception e)
{
throw e;
}
return strRootPath;
}
这样就实现了利用FileTable上传文件的功能。到最后,您发现是不是很简单呢?
欢迎您积极提出建议和疑问,我会尽自己的力量给您满意的答复,O(∩_∩)O谢谢
SQL2012之FileTable与C#的联合应用的更多相关文章
- Dynamics CRM 之ADFS 使用 WID 的独立联合服务器
ADFS 的使用 WID 的独立联合服务器适用于自己的测试环境,常用的就是在虚机中使用. 拓扑图如下: wID:联合身份验证服务配置为使用 Windows 内部数据库
- Dynamics CRM 之ADFS 使用 WID 的联合服务器场
使用 WID 的联合服务器场 默认拓扑 Active Directory 联合身份验证服务 (AD FS) 是联合服务器场,使用 Windows 内部数据库 (WID). 在这种拓扑, AD FS 使 ...
- Hibernate(5)—— 联合主键 、一对一关联关系映射(xml和注解) 和 领域驱动设计
俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及的知识点总结如下: One to One 映射关系 一对一单向外键(XML/Annotation) 一对一双向外键关联(XML/A ...
- Federated Identity Pattern 联合身份模式
Delegate authentication to an external identity provider. This pattern can simplify development, min ...
- [占位-未完成]scikit-learn一般实例之十一:异构数据源的特征联合
[占位-未完成]scikit-learn一般实例之十一:异构数据源的特征联合 Datasets can often contain components of that require differe ...
- SQL联合查询:子表任一记录与主表联合查询
今天有网友群里提了这样一个关于SQL联合查询的需求: 一.有热心网友的方案: 二.我的方案: select * from ( select a.*,(select top 1 Id from B as ...
- Dynamics CRM 之ADFS 使用 SQL Server 的联合服务器场
此拓扑用于 Active Directory 联合身份验证服务 (AD FS) 不同于使用 Windows 内部数据库 (WID) 部署拓扑,因为不会将数据复制到每台联合服务器场中的联合身份验证服务器 ...
- Dynamics CRM 之ADFS 使用 WID 和代理的联合服务器场
为此部署拓扑 Active Directory 联合身份验证服务 (AD FS) 等同于联合服务器场与 Windows 内部数据库 (WID) 拓扑中,但它将代理服务器计算机添加到外围网络,以支持外部 ...
- SQL Server 2012 新特性:FileTable
FileTable是基于FILESTREAM的一个特性.有以下一些功能: 一行表示一个文件或者目录. 每行包含以下信息: file_Stream流数据,stream_id标示符(GUID). 用户表示 ...
随机推荐
- mysql使用mysqldump导出数据出错
mysqldump -hlocalhost -uroot -p123456 student_info jssypk > c:/databackup.sql 导出表结构 mysqldump - ...
- iScroll使用
新公司比较喜欢用iScroll,而我对此一无所知,特此调研iScroll用法,写在这里方便查看 IScroll是移动页面上被使用的一款仿系统滚动插件. myScroll = new IScroll(& ...
- Python学习总结 06 paramiko 远程执行命令
有时会需要在远程的机器上执行一个命令,并获得其返回结果.对于这种情况,python 可以很容易的实现. 1 工具 Python paramiko 1) Paramiko模块安装 在Linux的Term ...
- sql Server 发送邮件 错误类型及原因
设置警报 在[常规项]中做以下设置 新建警报 设置警报名称 选择数据库 选择严重性 在[响应项]中可以做以下设置 选择要邮件通知的操作员 可以设置执行一个警报作业 在选项 ...
- 【转】CPU调度
转自:http://blog.csdn.net/xiazdong/article/details/6280345 CPU调度 用于多道程序 以下先讨论对于单CPU的调度问题. 回顾多道程序,同时把 ...
- Google Web Toolkit (GWT)怎么制作多个用户界面
Google Web Toolkit即GWT是目前基于AJAX技术开发的一个比较成功的框架包,但是其附带例程中只有单页面的实例,那么应该怎么样制作多个页面呢? 其实很简单,GWT的一个模块,就是一个页 ...
- cocos2d与cocos2d-X中的draw和update
像其它的游戏引擎一样,我们有两个不同的方法来完成draw和update. 1: Draw:每一个CCNode都有一个draw方法,每一帧都会调用.我们只在这个方法里做描绘的事情. 2: Update: ...
- 搭建docker私有仓库 笔记
抄送消息到企业微圈 avalon组件 twitterCopy/twitterCopy 说明 说明 说明 说明 说明 说明 该组件提供接口 开发者可以吧 有需要分享到微圈的的信息 发布到微圈中去. 应用 ...
- [PWA] Add web app to your Home Screen
Clone: Link Modify the structure: Move css, js, image, index.html to an 'app' folder. manifest.json: ...
- Swift 表视图动画教程: Drop-In Cards
http://www.raywenderlich.com/76024/swift-table-view-animations-tutorial-drop-cards 标准 table view 是一个 ...