Windows窗体c# - 将每行从RichTextBox插入到SQL Server的单独列中

问题描述 投票:-1回答:2

我是.NET Framework的初学者,所以如果我的代码有一些错误,请指导我。

我正在使用Visual Studio 2014的Windows窗体中的C#创建一个.NET应用程序,并使用SQL Server 2014作为数据库。

我正在尝试实现一个任务,客户在RichTextBox中输入文本,其中段落也可以有多个段落。每个句子以句号结束(。)。我想要实现的是输入的文本应保存到数据库列,其中每一行以句号结尾分开,并应保存在不同的列中。

这是我到目前为止在Visual Studio中所做的:

private void button1_Click(object sender, EventArgs e)
    {
        string[] values = richTextBox1.Text.Split('$');
        obj.url = "abc.com";
        foreach (string item in values)
        {
            obj.content_result= item;

        }
        dbobj.table_test.Add(obj);
        dbobj.SaveChanges();
        MessageBox.Show("Content Added Successfully");
    }

我的数据库表如下:

表名:Table_test

ID (int - Primary Key - Auto Increment) | Content varchar(MAX) | URL varchar(MAX)

这会将数据保存到名为table_test的数据库中,并使用名为;内容和网址,上面的代码应该从RichTextBox插入数据到每个句子应该保存在一个单独的行中的内容。

E.g

如果用户在RichTextBox中输入以下文本:

他是个好孩子。他的工作做得很好。他宁愿早点工作以避免不便。

上述字符串应保存在数据库中:

ID | Content                                        | URL
--------------------------------------------------------------------
 1 | He is a good boy.                              | abc.com
 2 | He does his work very well                     | abc.com
 3 | He prefer to work early to avoid inconvenience | abc.com

但是,以上数据保存在数据库中:

ID | Content     | URL
--------------------------------------------------------------------------------------------------------------
 1 | He is a good boy. He does his work very well. He prefer to work early to avoid inconvenience. | abc.com

请帮我修复这个问题,这样每个句子都保存在表的不同列中。

谢谢 :)

c# sql-server windows-forms-designer
2个回答
1
投票
public class Table
{
    public int Id;
    public string Content;
    public string Url
}

string[] lines = richTextBox1.Text.Split(Environment.NewLine.ToCharArray());
List<Table> items = new List<Table>();
int id = 1;
for (int i=0;i < lines.Length; i++)
{
      string[] tmp = lines[i].Split('|');
      foreach (string x in tmp[1].Split('.'))
          if(!x.Trim()=="")
              items.Add(new Table{ Id = id++ , Content = x + ".", Url = tmp[2] }); 
}

现在,您拥有数组中的所有项目可能会使用EF或只是循环其项目以将它们添加到您的数据库。


0
投票

你应该用点分割文字

string[] values = richTextBox1.Text.Split('.');

但如果你的文本中有网站地址,你应该在每个句子的末尾加上一个像$或类似的符号来将长文本分成字符串数组

© www.soinside.com 2019 - 2024. All rights reserved.