我需要帮助。我必须使用c#将文档文件和它们的文件夹名插入到mssql中。下面是一些示例目录:
\gpvmsrv01 01\输入\扫描\专利\2017\2\i AP 20170115\公式\1.doc\gpvmsrv01 01\输入\扫描\专利\2016\1\i AP 20160248\Description\2_u.doc .
\gpvmsrv01 01\INPUT\Scan\专利权是不可更改的根文件夹。但是其他文件夹可以被循环。而且文件的数量超过了一千。
表名:专利
[app_number] [int] NOT NULL,
[type] [nchar](20) NULL,
[filename] [nchar](10) NULL,
[data] [varbinary](max) NULL,我应该遍历所有目录。
所以我的第一行值
app_number=20170115
type=Formula
filename=1
data=1.doc file我的第二行值
app_number=20160248
type=Description
filename=2_u
data=2_u.doc file如果有人帮我做一些示例代码,我会很棒的。
发布于 2017-09-28 07:06:17
正如佐哈尔在评论中指出的那样,这个问题过于宽泛,因为它涉及多方面的关切:
我假设您不知道从哪里开始,所以我会抛出一个代码示例来让您开始:
static void Main(string[] args)
{
const string baseFolder = "\\gpvmsrv01\\INPUT\\Scan\\Patent\\";
const string query =
"INSERT INTO Patent([app_number], [type], [filename], [data]) " +
"VALUES ({0}, {1}, {2}, {3})"
;
var fileList = Directory
.EnumerateFiles(baseFolder, "*", SearchOption.AllDirectories)
.ToArray()
;
using (var conn = new SqlConnection("your connection string goes here"))
using (var cmd = conn.CreateCommand())
{
foreach (var fileX in fileList)
{
var parts = fileX.Substring(baseFolder.Length).Split('\\');
// extract only the number
var appNum = Regex.Replace(parts[2], "[^0-9]", string.Empty);
var typ = parts[3];
var fn = parts[4];
var contents = File.ReadAllBytes(fileX);
cmd.CommandText = string.Format(query, appNum, typ, fn, contents) + Environment.NewLine;
}
cmd.ExecuteNonQuery();
}
}根据文件夹上的安全权限,您可能希望以管理员身份运行此代码。否则,预期会出现UnauthorizedAccessException。
https://stackoverflow.com/questions/46461814
复制相似问题