2016-07-20 2 views
1

Я хочу спросить, как получить индексполучения индекса после сравнения или поиск

public void cari() 
     { 
      SqlDataAdapter adapter = new SqlDataAdapter(command.CommandText, myConnection); 
      try 
      { 
       ds.Tables.Clear(); 

       command.Connection = myConnection; 
       command.CommandText = "select * from General.genre WHERE genre Like '%"+textEdit1.Text.ToString()+"%' or code like '%"+textEdit1.Text+"%'"; 
       myConnection.Open(); 
       // adapter.Fill(dt); 

       var buka = command.ExecuteReader(); 


       if (buka.Read()) 
       { 

        var x1 = buka[1].ToString(); 
        textEdit2.Text = x1; 
        MessageBox.Show("asdas" + textEdit2.Text + ";"); 


       } 
       else 
       { 
        MessageBox.Show("type genre"); 
       } 

Приведенный выше код показывает только строку, но я хочу знать, как получить индекс. Может быть, код внутри после if (buka.read())?

enter image description here

+0

Какой индекс вы говорите? индекс для данного имени столбца? –

+0

Я забыл загрузить изображение, если я набираю танец, он показывает «танец», в каком индексе –

+0

iam попробуйте использовать нижеприведенный ответ 1 –

ответ

0

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

Решение:

Используйте этот SQL-запрос в качестве CommandText:

string query = "SELECT * FROM " + 
       "(SELECT *, ROW_NUMBER() OVER(ORDER BY(SELECT NULL)) [index] " + 
       "FROM General.genre) R " + 
       "WHERE [genre] LIKE '%" + textEdit1.Text.ToString() + "%' " + 
       "OR [code] LIKE '%" + textEdit1.Text.ToString() + "%' "; 
command.CommandText = query; 

Тогда внутри использования для чтения:

var x1 = buka[1].ToString(); 
textEdit2.Text = x1; 
var index = int.Parse(buka["index"]); 
MessageBox.Show("asdas" + textEdit2.Text + "; Index = " + index); 
+0

hhm спасибо за ответ ур. уверен, что он работает , но iam knda использует этот запрос. знаете ли вы, как его отображать? –

+0

@DavidChopperField Вы должны изменить запрос, иначе вы не получите исходный индекс в таблице. – user3185569

+0

ОК, хочу убедиться, что Почему начало индекса 1 не 0? –

0

Следующая строка кода должна дать вам индекс, соответствующий имени столбца.

int index = buka.GetOrdinal("ColumnName"); 

Если вы используете индекс для доступа к полям считывателя, у вас есть номер, требуемый в любом случае.

+0

, но он только читает, какой индекс является столбцом, мне нужно для строки? как балет. ответ –

+0

Извините, не понял, что вы хотите номер строки. Но так как этот индекс меняется с каждым запросом, в зависимости от оператора where и порядка от оператора, я думаю, вы можете использовать счетчик, который вы увеличиваете с каждым buka.Read(); – AlexanderS

+0

вот так? int counter = 0; MessageBox.Show ("asdas" + textEdit2.Text + "; индекс" + counter ++); счетчик продолжает отображаться как 0 –

Смежные вопросы