// Simplest possible SQL test with error handling #include "FiveSqlDef.ch" FUNCTION Main() LOCAL aResult, oErr // Create test table dbCreate("simple_test", { {"ID","N",4,0}, {"NAME","C",20,0} }) USE "simple_test" NEW EXCLUSIVE APPEND BLANK REPLACE ID WITH 1, NAME WITH "Alice" APPEND BLANK REPLACE ID WITH 2, NAME WITH "Bob" CLOSE ALL ? "=== Simple SQL Test ===" ? "Table created with 2 rows" // Quick sanity check: open and iterate USE "simple_test" NEW SHARED ALIAS "SANITY" ? "Sanity check - RecCount:", RecCount() dbGoTop() LOCAL nRowCount := 0 DO WHILE ! Eof() nRowCount++ ? " Row:", nRowCount, "ID:", FieldGet(1), "EOF:", Eof() dbSkip() IF nRowCount > 5 ? " BREAK: too many rows" EXIT ENDIF ENDDO ? " After loop EOF:", Eof() CLOSE ALL BEGIN SEQUENCE ? "Calling five_SQL..." aResult := five_SQL("SELECT * FROM simple_test") ? "Result type:", ValType(aResult) IF ValType(aResult) == "A" .AND. Len(aResult) >= 2 ? "Fields:", Len(aResult[1]) ? "Rows:", Len(aResult[2]) ENDIF RECOVER USING oErr ? "SQL Exception:", oErr END SEQUENCE FErase("simple_test.dbf") ? "=== DONE ===" RETURN NIL