0

DelphiからSQLite3テーブルの1つをクエリしようとしています。(私のデータベースはworldであり、Cityというテーブルがあります)。私のコードは次のとおりです。

procedure TForm1.Button1Click(Sender: TObject);
begin
// Set the path of your database file.
  // Replace "full_path_to_your_database_file" with the absolute path
  // to your SQLite database file.
  SQLConnection1.Params.Add('World.db3');
  try
    // Establish the connection.
    SQLConnection1.Connected := true;
    Button1.Enabled := true;
    Memo1.Text := 'Connection established!';
  except
    on E: EDatabaseError do
      ShowMessage('Exception raised with message' + E.Message);
  end;
end;

procedure TForm1.ShowSelectResults(results: TDataSet);
var
  names: TStringList;
  i: Integer;
  currentField: TField;
  currentLine: string;
begin
  if not results.IsEmpty then
  begin
    results.First;
    names := TStringList.Create;
    results.GetFieldNames(names);
    while not results.Eof do
    begin
      currentLine := '';
      for i := 0 to names.Count - 1 do
      begin
        currentField := results.FieldByName(names[i]);
        currentLine := currentLine + ' ' + currentField.AsString;
      end;
      memo1.Lines.Add(currentLine);
      results.Next;
    end;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  results: TDataSet;
  query: String;
begin
  Memo1.Clear;
  // A random query
  query := 'SELECT * FROM City;';

  try
  // Execute the query on the database.
    SQLConnection1.Execute(query, nil, results);
  except
    on E: Exception do
      Memo1.Text := 'Exception raised with message: ' + E.Message;
  end;
  // Show the results of the query in a TMemo control.
  ShowSelectResults(results);
end;

このコードをコンパイルして実行すると、データベースに接続されます。しかし、このエラーをスローします。「メッセージで発生した例外:そのようなテーブルはありません:City」 私は何時間もかけてこのエラーが発生した理由を理解しました。このコードの多数のバージョンも試してみました。どちらも機能していないようです。この点での助けは大歓迎です。

4

1 に答える 1

3

SQLiteがデータベースファイルを見つけられない場合は、新しいファイルを作成して開くことができます。データベースファイルには常に絶対パスを使用する
必要があります。

さらに、接続パラメーターのパラメーター名を含めるのを忘れました。

SQLConnection1.Params.Add('Database=' + ExtractFilePath(ParamStr(0)) + 'World.db3');
于 2013-01-10T12:20:48.700 に答える