在c#中将字符串数据插入数据库

时间:2014-04-20 16:12:49

标签: c# sql-server

我正在研究尖锐的nlp,我正在提取所有的形容词现在我需要将它存储在数据库中,我已成功将其添加到数据库但问题是我想要将形容词分别存储到数据库中我怎么能单独存储形容词或者例如我们有字符串,我们想将每个单词分别存储到数据库中,我们只有一列我们怎么能这样做? 。请帮助我 这是我的代码。

private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                string cleaned = richTextBox1.Text.Trim();
                string st = "INSERT INTO TABLE1(adjective)VALUES('" + cleaned + "')";
                SqlConnection con = new SqlConnection("Data Source=ZAZIKHAN\\SQLEXPRESS;Initial Catalog=mis;Integrated Security=True");
                con.Open();
                SqlCommand cmd = new SqlCommand(st, con);


                if (cmd.ExecuteNonQuery() == 1)
                {

                    MessageBox.Show(" succesfully added");
                }
                else
                {
                    MessageBox.Show("Sorry we couldnt add the Values Please try Again");

                }
                con.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("" + ex);
            }
        }

现在我将这些数据存储在richtextbox中。

local/JJ  daily/JJ  n/price/rate/JJ  human/JJ  possible/JJ  correct/JJ  exact/JJ  local/JJ  

local/JJ  daily/JJ  n/price/rate/JJ  human/JJ  possible/JJ  correct/JJ  exact/JJ  local/JJ  

dry/JJ  nd/JJ  

new/JJ  full/JJ  OK/JJ  final/JJ  white/JJ  OK/JJ  howajaa/JJ  smajder/JJR  agaa/JJ  nasambd/JJ  Live/JJ  



final/JJ  



great/JJ  s3/JJ  final/JJ  

resistant/JJ  Z1/JJ  white/JJ  new/JJ  black/JJ  amaa.Kintact/JJ  possible/JJ  main/JJ  mobile/JJ  rapak/JJ  mil/JJ  

important/JJ  mil/JJ  smart/JJ  



35-h/JJ  OK/JJ  full/JJ  











Want/JJ  complete/JJ  white/JJ  same/JJ  

available/JJ  perfect/JJ  

interested/JJ  

3 个答案:

答案 0 :(得分:1)

首先,行

string cleaned = richTextBox1.Text.Trim();
string st = "INSERT INTO TABLE1(adjective)VALUES('" + cleaned + "')";

创建一个称为SQL Injection的大型安全漏洞。

为了将形容词分别存储在正确的非规范化数据库中,您将拥有一个父表,例如存储原始句子,以及与父对象具有1:N关系的子表,其中每个形容词存储一行加上父行的相应ID。

由于您只有一列可用,因此您可以使用任何方便的格式将形容词数组存储在一列中。你可以序列化那个数组(到二进制,XML,JSON等)并存储它,或者因为你知道你有一个有限的输入字符集,你甚至可以将它存储为逗号分隔列表。

答案 1 :(得分:0)

你可以在单词前加上一些字符来表示它们是动词,名词,形容词和tehn在数据库中插入这些值

例如 N_JonSkeet - 名词

V_Solve - 动词

A_Highest - 形容词

string cleaned = extractAdjective(richTextBox1.Text.Trim());
string st = "INSERT INTO TABLE1(word) VALUES(@Word)";
SqlConnection con = new SqlConnection("Data Source=ZAZIKHAN\\SQLEXPRESS;Initial Catalog=mis;Integrated Security=True");
con.Open();
SqlCommand cmd = new SqlCommand(st, con);
SqlParameter param = new SqlParameter("@Word", SqlDbType.NChar);
param.Value = "A_"+cleaned;
cmd.Parameters.Add(param);

答案 2 :(得分:0)

我会将字符串分成一个列表,然后遍历列表并插入到您的数据库中:

var vals = "local/JJ  daily/JJ  n/price/rate/JJ  human/JJ  possible/JJ...";
var results = vals.Replace(" ", "")
                  .Replace("/JJ", "|")
                  .Replace("/", "|")
                  .Split('|')
                  .Distinct();

while(var result in results)
{
   // DO insert here
}