Member 12950401 Ответов: 1

Не удалось войти в систему для пользователя


Исключение типа "System. Data.SqlClient. SqlException" произошло в System.Data.dll но не был обработан в пользовательском коде. я использую приведенные ниже сведения о сервере с проверкой подлинности windows.

ноутбук-upd2jgs7\sqlexpress.college_education.dbo

Что я уже пробовал:

SqlConnection con = новый SqlConnection();
против.ConnectionString = " источник данных=.\\sqlexpress;начальный каталог=college_education";
кон.Открыть();
строка q = " вставить в category_name(category_name) значения ('" + TextBox1. Text +"')";
SqlCommand com = new SqlCommand(q, con);
ком.Метод executenonquery();
Ответ.Писать("предупреждение (категория'успешно зарегистрирован')");
против.Закрывать();

1 Ответов

Рейтинг:
2

OriginalGriff

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

string q = "INSERT INTO category_name (category_name) VALUES (@CN)";
using (SqlCommand com = new SqlCommand(q, con))
   {
   com.Parameters.AddWithValue("@CN", TextBox1.Text);
   com.ExecuteNonQuery();
   }
Блок using гарантирует, что команда будет закрыта и удалена, когда вы закончите с ней - вы должны использовать ее для всех объектов SQL (соединения, команды, адаптеры данных,...)
Во-вторых, ваша строка подключения не содержит никакой информации об авторизации, такой как имя пользователя и пароль, или указание на то, что вы используете интегрированную безопасность.
Взгляните на это: Простое создание строки подключения SQL[^]- это должно помочь вам создать рабочую строку.

В-третьих, никогда не вводите жесткие строки подключения в ваше приложение - всегда загружайте их из конфигурационного файла (или web.config в вашем случае).

И сделайте себе одолжение, перестаньте использовать имена Visual Studio по умолчанию для всего - вы можете помнить, что" TextBox8 " - это номер мобильного телефона сегодня, но когда вам придется изменить его через три недели, вы тогда это сделаете? Используйте описательные имена - например, "tbMobileNo" - и ваш код станет легче читать, более самодокументируемым, более легким в обслуживании-и на удивление быстрее кодировать, потому что Intellisense может добраться до" tbMobile "за три нажатия клавиш, где" TextBox8 " занимает размышление и 8 нажатий клавиш...


Member 12950401

спасибо...не могли бы вы, пожалуйста, дать мне знать название любой pdf-книги для c# asp.net для начинающих

OriginalGriff

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

Member 12950401

хорошо sir...so пожалуйста, присылайте мне какой-нибудь контент веб-сайта или любой другой материал, доступный в интернете, чтобы я стал хорошим c# asp.net программист