Ilyas Zahir Ответов: 2

Проверьте, существует ли текст в моей базе данных.#


Эй ребята кто нибудь может помочь мне проверить существует ли текст в базе данных
вот что я пишу в данный момент
&низкотемпературный;
connstring = "SERVER=188.121.43.9;PORT=3306;DATABASE=mydbname;UID=mydbusername;PASSWORD=s1996;";
        MySqlConnection conn = new MySqlConnection(connstring);
        MySqlCommand command = conn.CreateCommand();
        command.CommandText = "Select all from dbtable";
>

вот как выглядит моя БД

&низкотемпературный;
uname     upass
test      1900
test2     1999
>
у меня есть текстовое поле 1
чего я хочу, так это
например :
чек если textbox1.существует текст на колонки команде uname показать окно MessageBox.Шоу("существовать")

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

hey guys can anyone help me to check if a text exist in database
thats what im writting at this moment
<
connstring = "SERVER=188.121.43.9;PORT=3306;DATABASE=mydbname;UID=mydbusername;PASSWORD=s1996;";
        MySqlConnection conn = new MySqlConnection(connstring);
        MySqlCommand command = conn.CreateCommand();
        command.CommandText = "Select all from dbtable";
>

this is how my DB looks like

<
uname     upass
test      1900
test2     1999
>
i have textbox1
what i want is
for example : 
chek if textbox1.text exist at column uname show MessageBox.Show("exist")

ChauhanAjay

изменить свой запрос "выбрать количество(*) из таблицу dbtable, где команде uname, как '%"+текстовое поле textbox1.текст.метод toString()+"%'". Если результат запроса больше нуля, покажите свое окно сообщения.

CHill60

Не делай этого!
Этот запрос уязвим для атаки SQL-инъекций. Никогда не объединяйте пользовательский ввод в свои SQL-команды.

[no name]

Ваш код не будет компилироваться.
Если вам удалось заставить его скомпилироваться, какую возможную выгоду вы получите, если вызовете ToString в строке?

2 Ответов

Рейтинг:
6

shreyal acharya

<pre>String connstring = "SERVER=188.121.43.9;PORT=3306;DATABASE=mydbname;UID=mydbusername;PASSWORD=s1996;";
            SqlConnection conn = new SqlConnection(connstring);
            SqlCommand command = conn.CreateCommand();
            command.CommandText = "Select * from dbtable where name=@name";
            command.Parameters.AddWithValue("@name", comboBox1.SelectedValue);
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            sda.Fill(dt);
            if (dt.Rows.Count > 0)
            {
                MessageBox.Show("exist");
            }


CHill60

Я проголосовал только за 4 балла за использование параметризованного запроса, но не за максимум, потому что вы используете SqlDataAdapter и заполняете DataTable. Требуется только одно значение, и оно более эффективно.

Рейтинг:
0

CHill60

Я бы использовал ExecuteScalar, чтобы быть более эффективным... подобный этому:

private void btnNext_Click(object sender, EventArgs e)
{
    if (comboBox1.SelectedIndex == -1) return;
    using (var conn = new SqlConnection(connstring))
    {
        conn.Open();
        var cmd = new SqlCommand
        {
            CommandText = "select count(*) from dbtable where UPPER([name])=@name",
            Connection = conn
        };
        cmd.Parameters.AddWithValue("@name", comboBox1.SelectedItem.ToString());
        var res = (int)cmd.ExecuteScalar();
        if (res > 0) 
            MessageBox.Show("exist");
    }
}
Что нужно отметить:
- Я уже использовал using видеть Установление соединения[^]
Цитата:
Блок Using в Visual Basic или C# автоматически избавляется от соединения, когда код выходит из блока, даже в случае необработанного исключения.

- Я использовал метод ExecuteScalar, так как он требует меньше кода и меньше ресурсов-см. Свойство sqlcommand.Метод ExecuteScalar (System. Data.SqlClient)[^]
- Я проверяю, действительно ли что-то выбрано в выпадающем списке, прежде чем пытаться использовать это значение.