Как передать параметр в sqlParam - PullRequest
0 голосов
/ 22 ноября 2018

как передать параметр в sqlParam

_id=23
SqlClient.Main.CreateCommand("select X from TAB where ID= @id", new SqlParam("id", K_{0}), _id)).ExecScalar<int>();

У меня есть переменная, которую необходимо передать в SqlParam.параметры id="K_23" или "K_3131".теперь sql не видит этот параметр.Как это правильно сделать !?

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Исходя из вашего ответа на мой комментарий, я думаю, что вы ищете это:

private int _id = 23
// ...
var idParam = new SqlParam("id", string.Format("K_{0}", _id))
SqlClient.Main.CreateCommand("... where ID=@id", idParam).ExecScalar<int>();

string.Format("K_{0}", _id) создает строку "K_23".Другим способом в более новых версиях C # будет $"K_{_id}".

new SqlParam("id", "K_23"), создающий строковый параметр со значением "K_23".

Затем ваша команда фильтрует по ID='K_23'.

Это то, что вы пытаетесь достичь?Или K_23 - это поле в вашей базе данных, и вы хотите проверить, имеет ли идентификатор поля то же значение, что и поле K_23?

0 голосов
/ 22 ноября 2018

Шаблон обычно работает примерно так:

SqlCommand cmd = new SqlCommand("SELECT * FROM table WHERE column = @val", conn);
cmd.Parameters.AddWithValue("@val", 123);
cmd.Parameters.Add(new...);

Но, пожалуйста, прочитайте их:

Параметры SqlCommand Добавить против AddWithValue

Ив частности, если вы думаете об интенсивном использовании AddWithValue:

https://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already/

http://www.dbdelta.com/addwithvalue-is-evil/

На самом деле, по большей части вам не следуетписать такой код для простых вещей больше нет - есть множество хороших библиотек / методологий доступа к данным (EF, nHibernate, Dapper, DataTables), которые означают, что вставлять внутренние строки SQL в обработчики событий и т. д. просто нетнеобходимо и примитивно / непродуктивно.Никто не тратит время на написание кода на необработанные строки на экране, чтобы представить кнопку;они просто добавляют кнопку на страницу / форму.Нет необходимости получать этот низкий уровень с базами данных;использовать каркас доступа к данным

*select blah from blah where blah - это, несомненно, простая вещь.Каждый должен передавать такие запросы в библиотеку ORM, и я полностью потрясен, что использование SqlCommand/DataReader и т. Д. Все еще преподается / поддерживается для такого уровня сложности запросов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...