Ну, с одной стороны, вы делаете этот путь более сложным, чем нужно. Как в мире у вас есть 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 FirstName=@FirstName WHERE UserID=@UserID");
scomm.Parameters.Add(new SqlParameter("FirstName", firstName));
scomm.Parameters.Add(new SqlParameter("UserID", userId));
Это ^^^ гораздо лучше.
РЕДАКТИРОВАТЬ Также, если вам когда-нибудь удастся переработать этого монстра из вашей таблицы, попробуйте рефакторинг подмножеств полей в их собственную сущность (таблицу) и связать их через ссылочный идентификатор. Например, скажем, у меня есть таблица с именем [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