我需要帮助。我必须使用c#将doc文件插入mssql及其文件夹名称。以下是一些示例目录:
\ gpvmsrv01 \ INPUT \ Scan \ Patent \ 2017 \ 2 \ I AP 20170115 \ Formula \ 1.doc \ gpvmsrv01 \ INPUT \ Scan \ Patent \ 2016 \ 1 \ I AP 20160248 \ Description \ 2_u.doc ....
\ gpvmsrv01 \ INPUT \ Scan \ Patent \是不可更改的根文件夹。但是其他文件夹可以循环播放。 文件数量超过千件。
表名:专利
[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
如果有人帮我提供一些示例代码,我会非常感激的。
答案 0 :(得分:0)
正如佐哈尔在评论中指出的那样,这个问题过于宽泛,因为它涉及多个问题:
我假设你不知道从哪里开始,所以我会抛出一个代码示例来帮助你入门:
left
根据文件夹的安全权限,您可能希望以管理员身份运行此代码。否则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();
}
}
是预期的。