Имя таблицы и поле таблицы на SqlParameter C#?

Я хотел бы знать, как передать имя таблицы и название поля таблицы через SqlCommand на C#.

Tryied, чтобы сделать это путь это сделано путем установки SqlCommand с символ, но не работало. Какие-либо идеи??

15
задан VoodooChild 27 June 2010 в 19:26
поделиться

2 ответа

Параметры SqlCommand можно использовать только для передачи данных. Вы не можете использовать их для изменения sql-запроса (например, для добавления дополнительных полей в оператор select). Если вам нужно изменить sql-запрос, я бы предложил использовать StringBuilder для создания tsql-запроса.

Чтобы уточнить, .Net не конкатенирует sql перед отправкой его на SqlServer (по крайней мере, не таким простым способом, как вы ожидаете). Он фактически вызывает хранимую процедуру и передает аргументы отдельно. Это позволяет Sql Server кэшировать план запроса и оптимизировать производительность tsql.

Если бы вы написали эту команду SqlCommand...

var cmd = new SqlCommand("SELECT * FROM MyTable WHERE MyID = @MyID", conn);
cmd.Parameters.AddWithValue("@MyID", 1);
cmd.ExecuteNonQuery();

Это tsql, который будет выдан Sql Server...

exec sp_executesql N'SELECT * FROM MyTable WHERE MyID = @MyID',N'@MyID int',@MyID=1

Вы можете прочитать больше о sp_executesql на MSDN.

5
ответ дан 1 December 2019 в 01:30
поделиться

Я предполагаю, что вы пытаетесь выполнить sql-запрос типа

select @field from @table

но это не сработает. Sql не может иметь параметры на именах полей или вкладок, только на значениях.

Если мое предположение неверно, пожалуйста, расширьте свой вопрос.

10
ответ дан 1 December 2019 в 01:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: