如何在SQL数据库的不同行中保存富文本框的行?

时间:2015-07-12 15:17:13

标签: c# sql-server richtextbox

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

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

1 个答案:

答案 0 :(得分: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();
        }
    }             
}