Если в таблице существует номер ваучера, который я набрал, он должен отображать детали в соответствующих текстовых окнах, но если он не существует, то окно с сообщением (ID не существует!) Будет показать.Значения базы данных в текстовом поле
Например, номер ваучера 101 существует в таблице, Во-первых, я хотел бы ввести «1» в текстовом поле, то MessageBox сразу появится ... Во-вторых, я бы по-прежнему число после нажатия кнопки ОК он теперь будет быть номером «10» снова появится сообщение, в котором говорится (идентификатор не существует!). Тогда, наконец, я смогу набрать «101», подробности уже будут показаны в соответствующих текстовых окнах.
Моя проблема в том, что каждый раз, когда я набирал один номер, появляется сообщение, в котором говорится (идентификатор не существует!). Как я могу это решить?
TextChanged свойство "textBox22" Код:
private void textBox22_TextChanged(object sender, EventArgs e)
{
String path = "Data Source=LOCALHOST; Initial Catalog= sadd; username=root; password=''";
MySqlConnection sqlconn = new MySqlConnection(path); //communicator //constructors
MySqlCommand sqlcomm = new MySqlCommand();
MySqlDataReader sqldr;
sqlconn.Open();
sqlcomm.Connection = sqlconn;
sqlcomm.CommandType = CommandType.Text;
sqlcomm.CommandText = "Select * from approvedrecords where VoucherNumber=" + textBox22.Text + "";
sqldr = sqlcomm.ExecuteReader();
sqldr.Read();
if (sqldr.HasRows)
{
textBox26.Text = sqldr[0].ToString();
}
sqlconn.Close();
if (textBox22.Text == textBox26.Text)
{
String path8 = "Data Source=LOCALHOST; Initial Catalog= sadd; username=root; password=''";
MySqlConnection sqlcon = new MySqlConnection(path8); //communicator //constructors
string query = "select * from approvedrecords where VoucherNumber = " + textBox22.Text + " ";
MySqlCommand cmd = new MySqlCommand(query, sqlcon);
MySqlDataReader dbr;
sqlcon.Open();
dbr = cmd.ExecuteReader();
while (dbr.Read())
{
string a = (string)dbr["CheckNumber"].ToString();
string b = (string)dbr["DateCreated"];
string c = (string)dbr["Status"];
string d = (string)dbr["PayeesName"];
string f = (string)dbr["Amount"].ToString();
string g = (string)dbr["DatePrinted"];
string h = (string)dbr["Particulars"];
string i = (string)dbr["Prepared_by"];
string j = (string)dbr["Payment_received_by"];
textBox21.Text = a;
textBox23.Text = b;
textBox28.Text = c;
textBox20.Text = d;
textBox19.Text = f;
textBox27.Text = g;
textBox18.Text = h;
textBox16.Text = i;
textBox17.Text = j;
}
}
else
{
MessageBox.Show("ID doesn't exist!");
}
не было бы лучше, чтобы подключиться к базе данных один раз и хранить все данные в одном классе. вы сравниваете первую запись только в базе данных. вам нужно зациклить его с выходом, если он найдет совпадение. Я не работаю с sql, но это не кажется правильным, если (sqldr.HasRows) { textBox26.Text = sqldr [0] .ToString(); } – Claudius
Вы действительно должны привыкнуть давать разумные имена своим полям/свойствам/элементам управления. Также вы должны использовать paramaterised sql-запросы так же, как и сейчас, открываете для SQL-инъекции. –