Хорошо, что вы делаете этот путь более сложным, чем это должно быть. Как в мире у вас есть 96 столбцов на одной таблице, я никогда не узнаю, но чтобы выбрать нужный вам 45, вам просто нужно будет напечатать 45 столбцов в инструкции select.
Вот пример того, как будет выглядеть SQL. Естественно, я не собираюсь набирать 45 столбцов, но вы получите идею:
SELECT FirstName, LastName, Age, [keep going to 45] FROM tblUsers
Другой вопрос, который я хотел бы затронуть это то, как вы выполняете ваш SQL заявление. НИКОГДА НИКОГДА НИКОГДА НИКОГДА НИКОГДА НИКОГДА НИКОГДА не объединяйте строковые переменные в одну строку SQL. Убедитесь, что вы используете параметризованные запросы, по крайней мере. Но я бы порекомендовал также искать в Entity Framework или LINQ to SQL.
SqlCommand scomm = new SqlCommand("UPDATE tblUsers SET FirstName='" + firstName + "' WHERE UserID='" + userId + "'");
Это ^^^ равно очень плохой. Подумайте о том, что произойдет, если пользователь решит быть подлым и сделать свое имя Harry' AND Admin='true
. Вы можете подумать, «О, ну я просто делать firstName = firstName.Replace("'","''");
на всех моих переменных Если вы сделаете это, я лично пришел удар вам Спараметрировать ваши запросы как это:..
SqlCommand scomm = new SqlCommand("UPDATE tblUsers SET [email protected] WHERE [email protected]");
scomm.Parameters.Add(new SqlParameter("FirstName", firstName));
scomm.Parameters.Add(new SqlParameter("UserID", userId));
что ^^^ равно намного лучше .
EDIT Кроме того, если вы когда-либо получить шанс повторно работу, монстр из таблицы у вас есть, попробуйте рефакторинга подмножества полей в их собственной сущности (таблицы) и связать их через идентификатор ссылки. Например, скажем, у меня есть таблица под названием [tlbUsers], и она содержит информацию о конкретном пользователе. Например:
[tlbUsers]
UserID
FirstName
LastName
Age
Username
StreetAddress
City
State
ZipCode
Country
Phone
Рассмотрим рефакторинг, чтобы соответствующие значения имели свою таблицу.Вы можете взять всю информацию об адресе из этой таблицы пользователей и поместить ее в таблицу под названием tlbAddresses. Это не только облегчило бы работу при загрузке данных, но и потенциально может сэкономить ваше место в базе данных. Например, если Гарри и Салли живут в одном доме, они могут ссылаться на одну и ту же запись адреса.
[tlbUsers]
FirstName
LastName
Age
Username
AddressID
Phone
[tlbAddresses]
AddressID
Street
City
State
ZipCode
Country
что не так, просто используя обычное поле выбора1, поле2, ... из таблицы1? не делайте его более сложным, чем есть, особенно если нет веской причины. –
Это может быть только я, но не следует ли хранить хранимые процедуры, когда это возможно? Также почему бы просто не выбрать нужные столбцы? И как побочный элемент, в зависимости от того, как выглядит ваш пользовательский интерфейс и какая у вас свобода, возможно, вы могли бы его реорганизовать, чтобы ограничить общий объем информации, отображаемой сразу (мне не очень нравится просмотр сложных пользовательских интерфейсов). – dSebastien
@dSebastien - при необходимости следует использовать хранимые процедуры. Почему они существуют иначе? – Oded