2017-05-11 1 views
0

을 호출합니다. 작업은 간단하며 로컬 DB와 응용 프로그램이 있으며 검색을 통해 결과가있는 테이블이 표시됩니다. 문제는 SQL 쿼리입니다. Classes 테이블에 3 열이 있고 앱 테이블에 2 개만 표시해야하며 두 번째 테이블에는 문자 수가 제한되어야합니다. SQLite SQL 관리자가이 쿼리를 실행하고 올바른 데이터를 제공하지만 C#에서 오류가 발생합니다.sqlite C# substr는 오류

private void SearchButtonClick(object sender, RoutedEventArgs e) 
    { 

     base_connection.ConnectionString = "Data Source=New_test_base.db;Version=3;New=False;Compress=True;"; 
     base_connection.Open(); 
     sqlite_cmd= base_connection.CreateCommand(); 
     sqlite_cmd.CommandText = "select Tag, substr(Description, 1, 2) from Classes where Description = 'rty'";// "select * from Classes where Description = '"+ SearchString.Text+"'"; 

     DbData = sqlite_cmd.ExecuteReader(); 


     DbData.Read(); 
      string myreader = DbData["Tag"].ToString()+DbData["Description"].ToString(); 

      MessageBox.Show(myreader); 


    } 

오류는 다음과 같습니다 지수는 대규모 배열 벗어 나는 System.Data.SQLite를 사용하고 (표현에 대해 확실하지, 나는 러시아 VS 있음);

답변

1

쿼리에 열 별칭 'Description'을 입력해야 할 수도 있습니다.

private void SearchButtonClick(object sender, RoutedEventArgs e) 
{ 
    base_connection.ConnectionString = "Data Source=New_test_base.db;Version=3;New=False;Compress=True;"; 
    base_connection.Open(); 
    sqlite_cmd= base_connection.CreateCommand(); 
    sqlite_cmd.CommandText = "select Tag, substr(Description, 1, 2) as Description from Classes where Description = 'rty'";// "select * from Classes where Description = '"+ SearchString.Text+"'"; 

    DbData = sqlite_cmd.ExecuteReader(); 
    DbData.Read(); 
    string myreader = DbData["Tag"].ToString()+DbData["Description"].ToString(); 

    MessageBox.Show(myreader); 
} 
+0

세상에 .. 난에도이 작업을 할 수 있습니다 생각할 수는 .. 아마 예를 들어'DescripPrefix') 어떤을 피하기 위해 (별칭에 대해 다른 이름을 사용하지만이, 내 제안 될 줄 – chydik

+0

) 감사합니다 문제는 필자가 전체 설명 필드도 원해야합니다. 클래스가 작동하는 방식에 따라 이름 대신 위치에 따라 액세스 (예 : 색인 생성이 시작되는 위치에 따라 'DbData [1]'또는 'DbData [2]') 할 수도 있습니다. – TripeHound