Использование переменной в запросе - PullRequest
2 голосов
/ 15 января 2009

Я пытаюсь настроить запрос для моего набора данных в C #, используя переменную для фильтра. Например, я пытаюсь отобразить только определенный номер счета и его баланс, а локальная переменная - это номер счета, используемый в качестве фильтра для этого точного. Я поступаю неправильно?

Я не на пределе воображения настоящий программист, я в безвыходном положении и пробежался по руководству по программированию на C # и своей ограниченной мозговой силе (которая теперь работает на пустом месте) *

Я также хотел бы изменить информацию в базе данных, используя кнопку с обработчиком событий, чтобы добавить конкретные суммы в ячейку, которая была запрошена. Я обречен из-за недостатка знаний о жестком кодировании или действительно могу это осуществить?

С уважением, нубийский инженер пытается программировать ... или Джев

Ответы [ 4 ]

3 голосов
/ 15 января 2009

Когда вы настраиваете свой запрос к набору данных, вы можете сделать что-то вроде этого;

SELECT Name FROM TableNames WHERE Name = @Variable

Посмотрите эту ссылку для получения дополнительной информации

Возможно, стоит взглянуть и на атаку SQL-инъекцией, нажмите здесь

2 голосов
/ 16 января 2009
SqlCommand cmd = new sqlCommand("select * from table1 where column1 = @value", connection);
cmd.parameters.add(new SqlParameters("@value", "yourvalue"));
SqlDataReader dr = cmd.ExecuteReader();
while (dr.read())
{

   //code here!

}

Надеюсь, это будет полезно!

0 голосов
/ 16 января 2009

Давным-давно я написал небольшую статью о том, почему вы должны обязательно использовать параметры в операторах SQL. (Я написал это в ответ на тот факт, что многие люди используют конкатенацию строк для написания своих запросов).

Вы можете найти его здесь: http://fgheysels.blogspot.com/2005/12/avoiding-sql-injection-and-date.html

0 голосов
/ 15 января 2009

Вы можете просто использовать переменную для динамической генерации SQL-запроса, но остерегайтесь SQL-инъекций - будьте уверены, что ваша переменная может не содержать SQL-операторов.

Вы можете использовать функцию, которая собирает и возвращает ваш SQL-запрос следующим образом, с переменной для фильтра в качестве параметра:

internal string BuildSQLQueryForAccount(int account)
{
    StringBuilder sb = new StringBuilder();
    sb.Append("SELECT * ");
    sb.Append("FROM Accounts ");
    sb.AppendFormat("WHERE AccountNumber = {0}", account);
    return sb.ToString();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...