Как извлечь данные из базы данных и отобразить их на этикетке
Я работаю над регистрационной страницей для системы Lucky Draw.Таким образом, процесс регистрации заключается в том, что пользователь должен сканировать свой штрих-код с помощью usb-сканера штрих-кодов. Я застрял на той части, которая не может проверить идентификатор сотрудника в базе данных после сканирования пользователя или ввода в текстовое поле. Я также хочу отобразить имя сотрудника после сканирования штрих-кода.Может ли кто-нибудь дать мне несколько идей/решений.
Что я уже пробовал:
Ниже приведен мой код:
using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.IO; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class Attendance : System.Web.UI.Page { SqlCommand cmd = new SqlCommand(); SqlConnection con = new SqlConnection(); string str; private string connectionString; protected void Page_Load(object sender, EventArgs e) { con.ConnectionString = @"Data Source= (LocalDB)\MSSQLLocalDB; AttachDbFilename = C:\Users\Nor Asyraf Mohd No\source\repos\LuckyDraw\LuckyDraw\App_Data\ticket.mdf; Integrated Security = True"; txtText.Focus(); } protected void btnSave_Click(object sender, EventArgs e) { idcheck(); using (SqlConnection connection = new SqlConnection(connectionString)) { using (SqlCommand command = connection.CreateCommand()) { command.CommandText = "UPDATE EMPLOYEES SET Attendance = 'Present' WHERE EMP_ID = @id"; command.Parameters.AddWithValue("@id", txtText.Text); connection.Open(); command.ExecuteNonQuery(); connection.Close(); } } } public void idcheck() { string query = "select EMP_ID from EMPLOYEES where EMP_ID='" + txtText.Text + "'"; SqlDataAdapter ada = new SqlDataAdapter(query, con); DataTable dt = new DataTable(); ada.Fill(dt); if (dt.Rows.Count > 0) { lblError.Text = dt.Rows[0]["EMP_NAME"].ToString(); } } protected void Button1_Click1(object sender, EventArgs e) { Response.Redirect("Default.aspx"); } }
Bryian Tan
что за сообщение об ошибке? попробуйте выполнить обновление с целым числом. команда.Параметры.AddWithValue("@id", 1);
Второй запрос не имеет EMP_NAME в операторе select.
Member 13700339
Сообщение об ошибке:
System.Data.SqlClient.SqlException: 'попытка прикрепить базу данных с автоматическим именем для файла C:\Users\Nor Asyraf Mohd No\Documents\Visual Studio 2017\LuckyDraw\LuckyDraw\App_Data\ticket.mdf не удалось. База данных с таким же именем существует, или указанный файл не может быть открыт, или он находится на общем ресурсе UNC.'
Richard Deeming
string query = "select EMP_ID from EMPLOYEES where EMP_ID='" + txtText.Text + "'";
Этот код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
Вы уже знаете, как использовать параметры - вы правильно используете их в
btnSave_Click
метод.Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]