我有这个项目:
.txt
文件文本文件由四个字段中的选项卡分隔,以便作为数据库。
我使用富文本框完成了第一步,并将所有数据保存在字符串中。我的想法是将每一行的字符串拆分并保存在一个数组上,然后:如何拆分每一行以便我可以正确保存字段?如何将SQL Server上的数据库连接到C#上的项目?
答案 0 :(得分:3)
让我们一步一步解决这个问题......
获取数据
<小时/> 将文本文件转换为字符串变量。
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.
现在,你需要像循环这样的东西来浏览每个条目并将其插入数据库,这意味着我们现在需要我们的数据库连接...
连接数据库
<小时/> 代码项目(另一个有用的站点)有关于从C#建立SQL连接的this教程;下面是代码摘要(请阅读文章,此网站不是为了让人们代表您编写/查找代码!)
确保您使用的是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());}
}
注意,您可能不得不更改/编辑我的循环;它背后的逻辑是实现i乘以4,这样你就可以阅读每一列,所以列数(条目数)必须少4,这样你就不会得到一个超出范围的索引(输入全部为记事本我不确定我是否掌握了所有逻辑,但是,如果它是错误的,那么你必须解决这个问题,我们不能只为人们编写代码。/ p>
请注意!
像string.format()之类的东西让你打开 SQL注入,你真的应该查找SQL参数,但这将完成工作。以下是我认为必须阅读的一些帖子:
答案 1 :(得分:0)
您应该查看有关此主题的MSDN文档here 这将提供有关如何连接到SQL Server数据库的一些详细信息。
答案 2 :(得分:0)
要连接到数据库,您需要一个连接字符串,其中包含app.config文件中的所有信息。一旦连接到数据库,添加新行或甚至从代码内部更新一行应该没有问题。只需构建一个查询,您可以在其中为新行的每一列输入字符串数据!
有大量关于如何构建SQL查询以及如何连接到Microsoft网站上的数据库的文档,请看一下:)
答案 3 :(得分:0)
您可以尝试从命令行使用BCP。这会对您拥有的权限以及访问数据库的方式做出一系列假设,但基本上您可以在数据库服务器上调用它(它是一个隐藏的功能),或者您可以在本地复制文件:
https://msdn.microsoft.com/en-us/library/ms162802.aspx
BCP.exe ..在-S -U -P -c -t
中-c是“字符格式” -t是字段终止符 - 为TAB留空:
-U和-P如果是可信连接,可以替换为-T。
一些建议:通过导入到临时表,进行所需的任何更改,然后让SQL函数处理到生产表的传输,可以更好地处理这些事情。通过这种方式,您可以确保不会意外地吹走数据。
答案 4 :(得分:0)