2014-11-18 4 views
-3

У меня проблемы с конкатенацией sql-запроса. Как я могу конкатенировать две строки после события нажатия кнопки?SQL Query concatenation C#

Вот пример из кода:

private void Form1_Load(object sender, EventArgs e) 
{ 
    string sql = "select * from table"; //defaultquery 
    sql += querytail; //buttonclick event, concatenate query + querytail 
    NpgsqlConnection conn = new NpgsqlConnection(DSN()); 
    conn.Open(); 

    NpgsqlCommand command = new NpgsqlCommand(sql, conn); 
    // ......... etc 

} 
private void searchbutton9_Click(object sender, EventArgs e) 
{ 
    querytail = " where a = '" + filter(textBox1.Text.ToString()) + "'"; 
} 
+2

Вы никогда не должны этого делать. Вы оставляете себя открытым для SQL-инъекции ... Посмотрите [Параметрированные запросы] (http://stackoverflow.com/questions/5468425/how-do-parameterized-queries-help -against-sql-injection) – Sam

+0

Это не веб-приложение! Приложение для Windows Form. –

+0

Извините, но я задал еще один вопрос. Не о инъекции! Представьте, что я хочу конкатенировать две строки, а не sql-запрос. –

ответ

0

Две строки могут быть Concat по

String result = "Hello" + " World!"; //result = "Hello World!"

Или

string result = string.Concat("Hello", " World", "!"); //result = "Hello World!"

Вам нужно создать метод, который может постройте свой запрос и добавьте на него вещи. Так Somthing как:

public string GetQuery(string mainQuery, params string[] queryAppend) 
{ 
    return mainQuery + string.Join("", queryAppend); 
} 

Вы можете использовать это как: string result = GetQuery("Hello", " World", "!"); //result = "Hello World!";

Вы можете передать строку запроса в и все ваши пункты, где.

+0

Нет, я не хочу конкатенировать строку таким образом. –

+0

ну как еще вы собираетесь это сделать? –

+0

Я хочу отправить параметр (в данном случае querytail) из метода searchbutton9_Click в метод Form1_Load, объединить с запросом, а затем повторно выполнить NpgsqlCommand. –