2015-07-12 175 views
0

我已经创建了一个方法并在保存按钮上调用它。我想要将所有富文本框的行分别保存在SQL数据库的不同行中。即时帮助将不胜感激。如何在SQL数据库的不同行中保存富文本框的行?

private void SaveData() 
{ 
    xConn.Open(); 
    new SqlCommand("insert into tbldata values('"+DateTime.Now.ToString()+"','"+richTextBox1.Text+"')", xConn).ExecuteNonQuery(); 
    xConn.Close();     
} 

回答

1

你在你的RichTextBox不甚至迭代每一行。你只是插入它的当前文本。您可以使用它的Lines property,它将文本行作为字符串数组返回。

也不要插入DateTime值与他们的字符串代表。将他们的值直接添加到您的parameterized queries。顺便说一下,这种字符串连接对于SQL Injection攻击是开放的。

您应该始终考虑您的正确的数据类型为您的列类型。阅读:Bad habits to kick : choosing the wrong data type

private void SaveData() 
{ 
    using(var con = new SqlConnection(conString)) 
    using(var cmd = con.CreateCommand()) 
    { 
     cmd.CommandText = "insert into tbldata values(@date, @text)"; 
     string[] lines = richTextBox1.Lines; 

     foreach(var line in lines) 
     { 
      cmd.Parameters.Clear(); 
      cmd.Parameters.Add("@date", SqlDbType.DateTime).Value = DateTime.Now; 
      // Change your first column type to datetime or datetime2 
      cmd.Parameters.Add("@text", SqlDbType.NVarChar).Value = line; 
      // I assume your second column is nvarchar 

      if(con.State != ConnectionState.Open) 
       con.Open(); 

      cmd.ExecuteNonQuery(); 
     } 
    }    
} 
+0

我不明白你的代码可能是因为我是初学者。虽然我已经复制了你的代码并粘贴到了我的应用程序中,但它现在给出了一个错误4倍的错误信息,和NewLine in constant near:values(@date,@text)“; –

+0

@SyedAliAhmed不要复制和粘贴代码,首先理解它并将其调整为自己的连接和命令 –

+0

Error2'System.Data.SqlDbType'不包含'Datetime'的定义 –

相关问题