https://github.com/vtereshkov/sqlite-umka
SQLite for Umka
https://github.com/vtereshkov/sqlite-umka
Last synced: 4 months ago
JSON representation
SQLite for Umka
- Host: GitHub
- URL: https://github.com/vtereshkov/sqlite-umka
- Owner: vtereshkov
- License: bsd-2-clause
- Created: 2025-02-02T21:39:09.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2025-02-13T00:18:13.000Z (over 1 year ago)
- Last Synced: 2025-04-01T23:31:16.562Z (over 1 year ago)
- Language: C
- Homepage:
- Size: 2.98 MB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# SQLite for Umka
Database engine bindings for the [Umka](https://github.com/vtereshkov/umka-lang) programming language
[Download](https://github.com/vtereshkov/sqlite-umka/releases)
## Quick reference card
```
// Database connection
type Database* = struct {/* ... */}
fn open*(name: str): (^Database, std::Err)
fn (db: ^Database) prepare*(request: str): (^Row, std::Err)
// Row iterator
type Row* = struct {/* ... */}
fn (row: ^Row) step*(): (bool, std::Err)
fn (row: ^Row) count*(): int
fn (row: ^Row) name*(col: int): str
fn (row: ^Row) names*(): []str
fn (row: ^Row) value*(col: int): any
fn (row: ^Row) values*(): []any
// Error codes
type Result* = enum {/* ... */}
```
## Usage example
```
import (
"std.um"
"sqlite.um" // Replace with "umbox/sqlite/sqlite.um" when run from UmBox
)
fn getStr(): str {
s := ""
for true {
c := std::getchar()
if c == '\n' {
break
}
s += c
}
return s
}
fn main() {
db, err := sqlite::open(std::argv(1))
std::exitif(err)
for true {
printf("\n>>> ")
request := getStr()
if request == "" {
break
}
row, err := db.prepare(request)
if sqlite::Result(err.code) != .OK {
printf("SQLite error: %s\n", err.msg)
continue
}
got, err := row.step()
for got {
printf("\n<<< %v\n", row.values())
got, err = row.step()
}
if sqlite::Result(err.code) != .OK {
printf("SQLite error: %s\n", err.msg)
continue
}
}
}
```