我有这样的项目:如何导入文本文件并将数据保存到数据库中?
- 导入
.txt
文件 - 连接到SQL Server数据库
- 传输的所有数据存入数据库
的文本文件由制表四个分字段以及数据库。
我已经完成了使用富文本框并将所有数据保存在字符串中的第一步。我的想法是将每一行分割字符串并将其保存在数组中,但是:如何分割每一行以便我可以正确保存字段?如何将SQL Server上的数据库连接到C#上的项目?
我有这样的项目:如何导入文本文件并将数据保存到数据库中?
.txt
文件的文本文件由制表四个分字段以及数据库。
我已经完成了使用富文本框并将所有数据保存在字符串中的第一步。我的想法是将每一行分割字符串并将其保存在数组中,但是:如何分割每一行以便我可以正确保存字段?如何将SQL Server上的数据库连接到C#上的项目?
让我们来解决在这个时间一步...
获取数据:
string readText = File.ReadAllText("path to my file.txt");
更多关于此here
现在,我们已经在一个字符串,我们可以在新行解析为分裂它
List<string> listStrLineElements = List<string> listStrLineElements = line.Split(new string[] { Environment.NewLine }, StringSplitOptions.None).ToList();// You need using System.Linq at the top.
更多选择,可以发现here
现在,你需要将每个元素分成它自己的行;你说你有这片分隔这是很好的(像逗号分隔(CSV)是较常见的现代,但标签将工作!)......为此,我们可以做这样的事情:
List<string> rowList = listStrLineElements.SelectMany(s => s.Split('\t')).ToList();// The \t is an *escape character* meaning tab.
现在,你需要像一个循环的东西要经过这些条目中的每一个,并将其插入到数据库中,这意味着我们现在需要我们的数据库连接...
连接到数据库
确保您使用的是SQL命名空间...
using System.Data.SqlClient;
private void sqlCon(List<string> x)
{
//Replace with your server credentials/info
SqlConnection myConnection = new SqlConnection("user id=username;" +"password=password;server=serverurl;" +"Trusted_Connection=yes;" +"database=database; " + "connection timeout=30");
try
{
myConnection.Open();
for (int i = 0; i <= x.Count -4; i += 4)//Implement by 3...
{
//Replace table_name with your table name, and Column1 with your column names (replace for all).
SqlCommand myCommand = new SqlCommand("INSERT INTO table_name (Column1, Column2, Column3, Column4) " +
String.Format("Values ('{0}','{1}','{2}','{3}')", x[i], x[i + 1], x[i + 2], x[i + 3]), myConnection);
myCommand.ExecuteNonQuery();
}
}
catch (Exception e){Console.WriteLine(e.ToString());}
try{myConnection.Close();}
catch (Exception e){Console.WriteLine(e.ToString());}
}
请注意,您可能很可能必须更改/编辑我的循环;它背后的逻辑是实现4乘以所以你可以阅读你的每一列,所以列数(条目数)必须少于4,所以你不会得到一个索引越界(在记事本I中输入这一切我不确定我是否拥有所有的逻辑,但是如果错误是您必须解决的问题,我们不会为人们编写代码)。
请注意!
像string.format()这样的东西让你打开一个SQL注入,你真的应该查询SQL参数,但这将完成工作。以下是我认为一定要读一些帖子:
您应该查看有关此主题的MSDN文档here 这将提供有关如何连接到SQL Server数据库的一些详细信息。
要连接数据库,您需要一个连接字符串,其中包含app.config文件中的所有信息。一旦你连接到数据库,应该没有问题添加一个新行,甚至更新你的代码。只需构建一个查询,您可以在其中为新行的每一列输入字符串数据。
有关于如何建立SQL查询,以及如何连接到Microsoft网站上的数据库一吨的文档,给它看看:)
你可以尝试使用BCP命令行。这使得一帮什么权限你有,你如何访问数据库,但基本上你可以调用这个在数据库服务器上(它是一个隐藏的功能),也可以本地复制文件的假设:
https://msdn.microsoft.com/en-us/library/ms162802.aspx
BCP.EXE ..在-S -U -P -c -t
-c是 “字符格式” -t是字段终止 - 留空TAB
-U和-P可以如果它是可信连接,则用-T替换。
一些建议:通过导入到临时表,进行所需的任何更改,然后使用SQL函数处理传输到生产表,可以更好地处理这些事情。这样你可以确保你不会意外地吹走数据。
谢谢你很大的帮助。 只是一件事: for循环必须是“我<= x.Count”或它永远不会保存最后一个条目,花了我一段时间来解决这个问题。 此外,首先连接“失败”。这是连接,但没有保存任何东西。我用“服务器=(本地);” +“数据库=名称;” +“Trusted_Connection = yes;”与所有的大写和分号。另外,没有用户或角色,您发送给我的博客表示在使用可信连接时没有必要,这是正确的。 再次感谢您以正确的方式带领我。 –