从文本框传入SQL查询参数

时间:2014-02-15 17:50:02

标签: c# winforms sqlite

我在C#Winforms应用程序中有以下代码。我正在使用SQL Lite,但如何将文本框中的值传递给insert语句:

void InsertConnectionDetails()
{
    m_dbConnection.Open();

    string sql = "insert into rdpdirectory (company, server, username, password) values (txtCompany, txtServer, txtUsername,txtPassword)";
    SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection);
    command.ExecuteNonQuery();

    m_dbConnection.Close();
    MessageBox.Show("Done");
}

1 个答案:

答案 0 :(得分:6)

解决方案1:我可以告诉您需要将值直接插入INSERT INTO语句,但它会导致SQL注入攻击,不推荐使用。

试试这个:(我不建议这样做)

string sql = @"insert into rdpdirectory (company, server, username, password) 
                   values ('"+txtCompany.Text+"', '"+txtServer.Text+"','"+txtUsername.Text+"','"+txtPassword.Text+"')";

解决方案2:因此,您可以使用Parameterised Queries处于更安全的一面。

试一试:使用参数化查询(我建议)

string sql = @"insert into rdpdirectory (company, server, username, password) 
               values (@company, @server, @username,@password)";

SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection);
command.Parameters.AddWithValue("@company",txtCompany.Text);
command.Parameters.AddWithValue("@server",txtServer.Text);
command.Parameters.AddWithValue("@username",txtUsername.Text);
command.Parameters.AddWithValue("@password",txtPassword.Text);