2014-04-01 3 views
1

사용하려는 Microsoft Access 데이터베이스가 있습니다. 나는 연결을 만들었고 전체 필드를 목록 상자에 인쇄 할 수 있습니다. 그러나 하나의 키워드 만 검색하고 다른 필드에는 다른 값을 반환하는 방법이 있습니까? 내가 만들고 싶은 무슨을 예를 들어 데이터베이스 사용자 입력 하이하면C# 다른 필드를 사용하는 데이터베이스에서 값을 반환하십시오.

+-----------------+----------------------+ 
| INPUT   |  Response  | 
+-----------------+----------------------+ 
| hi    | "hey, how are you?" | 
| hello   | "hi"    | 
+-----------------+----------------------+ 

에서 두 개의 필드가있는 것은 의 기본 chatbox 정렬, 그것은 데이터베이스를 검색 키워드가있는 경우 발견되면 그것은 키워드에 따라 응답 필드를 반환합니다. oleDB 네임 스페이스에서 독자 함수를 사용해 보았지만 행운이 없었습니다. 솔직히 채팅 봇의 데이터베이스 측 시작 위치를 모르겠습니다.

+0

액세스하는 대신 entityframework 및 CompactSQL 데이터베이스를 사용하면 더 쉬울 수도 있습니다. –

답변

0
class Program 
{ 
    public void ResponseToUser(string userInput) 
    { 
     string connectionString = @"Your database path"; 
     using (OleDbConnection databaseConnection = new OleDbConnection(connectionString)) 
     { 
      databaseConnection.Open(); 
      using (OleDbCommand command = new OleDbCommand("SELECT * FROM TableName", databaseConnection)) 
      { 
       OleDbDataReader reader = command.ExecuteReader(); 
       string response = string.Empty; 
       while (reader.Read()) 
       { 
        if (reader["Keyword"].ToString().Equals(userInput)) 
        { 
         response = reader["Response"].ToString(); 
         break; 
        } 
       } 
       reader.Close(); 
      } 
     } 
    } 
} 

좋아, 전체 솔루션에 대한 내 대답을 편집했습니다. 이 방법으로 데이터베이스에 연결했는지는 확실치 않지만 작동해야합니다.

+0

IndexOutOfRangeException을 얻는 것이 처리되지 않았습니다. (reader [ "Keyword"]. ToString(). Equals (userInput)) – Evilk9

+0

@ Evilk9이 방법으로 데이터베이스에 연결 한 경우 내 대답을 편집했습니다. 귀하의 답변은 다음과 같습니다. http://msdn.microsoft.com/en-us/library/aa288452(v=vs.71).aspx DataRowCollection을 만든 후 새 데이터 집합을 만든 다음 내가 준 솔루션을 구현합니다. – msmolcic

+0

괜찮아, 고마워! – Evilk9

관련 문제