Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
3
Task/Table-creation-Postal-addresses/00-META.yaml
Normal file
3
Task/Table-creation-Postal-addresses/00-META.yaml
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
---
|
||||
from: http://rosettacode.org/wiki/Table_creation/Postal_addresses
|
||||
note: Database operations
|
||||
8
Task/Table-creation-Postal-addresses/00-TASK.txt
Normal file
8
Task/Table-creation-Postal-addresses/00-TASK.txt
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
;Task:
|
||||
Create a table to store addresses.
|
||||
|
||||
You may assume that all the addresses to be stored will be located in the USA. As such, you will need (in addition to a field holding a unique identifier) a field holding the street address, a field holding the city, a field holding the state code, and a field holding the zipcode. Choose appropriate types for each field.
|
||||
|
||||
For non-database languages, show how you would open a connection to a database (your choice of which) and create an address table in it. You should follow the existing models here for how you would structure the table.
|
||||
<br><br>
|
||||
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
MODE ADDRESS = STRUCT(
|
||||
INT page,
|
||||
FLEX[50]CHAR street,
|
||||
FLEX[25]CHAR city,
|
||||
FLEX[2]CHAR state,
|
||||
FLEX[10]CHAR zip
|
||||
);
|
||||
FORMAT address repr = $"Page: "gl"Street: "gl"City: "gl"State: "gl"Zip: "gll$;
|
||||
|
||||
INT errno;
|
||||
FILE sequence; errno := open(sequence, "sequence.txt", stand back channel);
|
||||
SEMA sequence sema := LEVEL 1;
|
||||
|
||||
OP NEXTVAL = ([]CHAR table name)INT: (
|
||||
INT out;
|
||||
# INT table page = 0; # # only one sequence implemented #
|
||||
# DOWN sequence sema; # # NO interprocess concurrency protection #
|
||||
on open error(sequence,
|
||||
(REF FILE f)BOOL: (
|
||||
reset(sequence); #set(table page,1,1);#
|
||||
put(sequence, 0);
|
||||
try again;
|
||||
FALSE
|
||||
)
|
||||
);
|
||||
try again:
|
||||
reset(sequence); #set(table page,1,1);# get(sequence,out);
|
||||
out +:=1;
|
||||
reset(sequence); #set(table page,1,1);# put(sequence,out);
|
||||
# UP sequence sema; #
|
||||
out
|
||||
);
|
||||
|
||||
OP INIT = (REF ADDRESS self)REF ADDRESS: ( page OF self := NEXTVAL "address"; self);
|
||||
|
||||
REF ADDRESS john brown = INIT LOC ADDRESS;
|
||||
|
||||
john brown := (page OF john brown, "10 Downing Street","London","England","SW1A 2AA");
|
||||
|
||||
printf((address repr, john brown));
|
||||
|
||||
FILE address table;
|
||||
errno := open(address table,"address.txt",stand back channel);
|
||||
# set(address table, page OF john brown,1,1); - standard set page not available in a68g #
|
||||
put bin(address table, john brown);
|
||||
close(address table)
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
#!/bin/sh -f
|
||||
awk '
|
||||
BEGIN {
|
||||
print "Creating table..."
|
||||
dbExec("address.db", "create table address (street, city, state, zip);")
|
||||
print "Done."
|
||||
exit
|
||||
}
|
||||
|
||||
function dbExec(db, qry, result) {
|
||||
dbMakeQuery(db, qry) | getline result
|
||||
dbErrorCheck(result)
|
||||
}
|
||||
|
||||
function dbMakeQuery(db, qry, q) {
|
||||
q = dbEscapeQuery(qry) ";"
|
||||
return "echo \"" q "\" | sqlite3 " db
|
||||
}
|
||||
|
||||
function dbEscapeQuery(qry, q) {
|
||||
q = qry
|
||||
gsub(/"/, "\\\"", q)
|
||||
return q
|
||||
}
|
||||
|
||||
function dbErrorCheck(res) {
|
||||
if (res ~ "SQL error") {
|
||||
print res
|
||||
exit
|
||||
}
|
||||
}
|
||||
|
||||
'
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
db: open.sqlite "addresses.db"
|
||||
|
||||
query db {!sql
|
||||
CREATE TABLE address (
|
||||
addrID INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
addrStreet TEXT NOT NULL,
|
||||
addrCity TEXT NOT NULL,
|
||||
addrState TEXT NOT NULL,
|
||||
addrZIP TEXT NOT NULL
|
||||
)
|
||||
}
|
||||
|
||||
close db
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <sqlite3.h>
|
||||
|
||||
const char *code =
|
||||
"CREATE TABLE address (\n"
|
||||
" addrID INTEGER PRIMARY KEY AUTOINCREMENT,\n"
|
||||
" addrStreet TEXT NOT NULL,\n"
|
||||
" addrCity TEXT NOT NULL,\n"
|
||||
" addrState TEXT NOT NULL,\n"
|
||||
" addrZIP TEXT NOT NULL)\n" ;
|
||||
|
||||
int main()
|
||||
{
|
||||
sqlite3 *db = NULL;
|
||||
char *errmsg;
|
||||
|
||||
if ( sqlite3_open("address.db", &db) == SQLITE_OK ) {
|
||||
if ( sqlite3_exec(db, code, NULL, NULL, &errmsg) != SQLITE_OK ) {
|
||||
fprintf(stderr, errmsg);
|
||||
sqlite3_free(errmsg);
|
||||
sqlite3_close(db);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
sqlite3_close(db);
|
||||
} else {
|
||||
fprintf(stderr, "cannot open db...\n");
|
||||
sqlite3_close(db);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
(require '[clojure.java.jdbc :as sql])
|
||||
; Using h2database for this simple example.
|
||||
(def db {:classname "org.h2.Driver"
|
||||
:subprotocol "h2:file"
|
||||
:subname "db/my-dbname"})
|
||||
|
||||
(sql/db-do-commands db
|
||||
(sql/create-table-ddl :address
|
||||
[:id "bigint primary key auto_increment"]
|
||||
[:street "varchar"]
|
||||
[:city "varchar"]
|
||||
[:state "varchar"]
|
||||
[:zip "varchar"]))
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
(lib 'struct)
|
||||
(lib 'sql)
|
||||
|
||||
(define Postal (make-table
|
||||
(struct postal (auto: id name street city state zip))))
|
||||
|
||||
Postal
|
||||
→ #table:#struct:postal [id name street city state zip]:[0]
|
||||
|
||||
(table-insert Postal '(0 Gallubert "29 rue de l'Ermitage" Paris Seine 75020))
|
||||
(table-insert Postal '(0 Brougnard "666 rue des Cascades " Paris Seine 75042))
|
||||
(table-make-index Postal 'postal.id)
|
||||
(table-print Postal)
|
||||
|
||||
[0] 15 Gallubert 29 rue de l'Ermitage Paris Seine 75020
|
||||
[1] 16 Brougnard 666 rue des Cascades Paris Seine 75042
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
-module( table_creation ).
|
||||
|
||||
-export( [task/0] ).
|
||||
|
||||
-record( address, {id, street, city, zip} ).
|
||||
|
||||
task() ->
|
||||
mnesia:start(),
|
||||
mnesia:create_table( address, [{attributes, record_info(fields, address)}] ).
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
import db.*
|
||||
import util.*
|
||||
|
||||
Class.forName( 'org.h2.Driver' )
|
||||
conn = DriverManager.getConnection( 'jdbc:h2:mem:test', 'sa', '' )
|
||||
statement = conn.createStatement()
|
||||
|
||||
statement.execute( '''
|
||||
CREATE TABLE `user_data` (
|
||||
`id` identity,
|
||||
`name` varchar(255) NOT NULL,
|
||||
`street` varchar(255) NOT NULL,
|
||||
`city` varchar(255) NOT NULL,
|
||||
`region` char(2) NOT NULL,
|
||||
`country` char(2) NOT NULL,
|
||||
`code` varchar(20) NOT NULL,
|
||||
`phone` varchar(20) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
)''' )
|
||||
|
||||
statement.execute( '''
|
||||
INSERT INTO `user_data` (`name`, `street`, `city`, `region`, `code`, `country`, `phone`) VALUES
|
||||
('Jacinthe Steinert', '8540 Fallen Pony Villas', 'Searights', 'IA', '51584-4315', 'US', '(641) 883-4342'),
|
||||
('Keeley Pinkham', '1363 Easy Downs', 'Mileta', 'TX', '77667-7376', 'US', '(469) 527-4784'),
|
||||
('Rimon Cleveland', '8052 Blue Pond Dale', 'The Willows', 'UT', '84630-2674', 'US', '(385) 305-7261'),
|
||||
('Berenice Benda', '2688 Merry Pines', 'Dacono', 'HI', '96766-7398', 'US', '(808) 451-2732'),
|
||||
('Mehetabel Marcano', '109 Sleepy Goose Crescent', 'Plains', 'UT', '84727-7254', 'US', '(385) 733-8404'),
|
||||
('Ambria Schiller', '7100 Tawny Robin Highway', 'Barlowes', 'ID', '83792-2043', 'US', '(208) 227-8887'),
|
||||
('Carne Cancino', '3842 Broad Pioneer Cape', 'Bardstown', 'IA', '51571-6473', 'US', '(563) 060-8352'),
|
||||
('Ince Leite', '7876 Stony Fawn Boulevard', 'Easton', 'ID', '83651-9235', 'US', '(208) 951-3024'),
|
||||
('Britney Odell', '3386 Lazy Shadow Thicket', 'Kimberly', 'OK', '73539-6632', 'US', '(539) 848-4448'),
|
||||
('Suprabha Penton', '9311 Dusty Leaf Alley', 'Niumalu', 'GA', '39927-8332', 'US', '(404) 589-0183')''' )
|
||||
|
||||
result = statement.executeQuery( '''SELECT * FROM user_data WHERE region = 'ID' ORDER BY code''' )
|
||||
print( TextTable.apply(result) )
|
||||
|
||||
conn.close()
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"log"
|
||||
|
||||
_ "github.com/mattn/go-sqlite3"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// task req: show database connection
|
||||
db, err := sql.Open("sqlite3", "rc.db")
|
||||
if err != nil {
|
||||
log.Print(err)
|
||||
return
|
||||
}
|
||||
defer db.Close()
|
||||
// task req: create table with typed fields, including a unique id
|
||||
_, err = db.Exec(`create table addr (
|
||||
id int unique,
|
||||
street text,
|
||||
city text,
|
||||
state text,
|
||||
zip text
|
||||
)`)
|
||||
if err != nil {
|
||||
log.Print(err)
|
||||
return
|
||||
}
|
||||
// show output: query the created field names and types
|
||||
rows, err := db.Query(`pragma table_info(addr)`)
|
||||
if err != nil {
|
||||
log.Print(err)
|
||||
return
|
||||
}
|
||||
var field, storage string
|
||||
var ignore sql.RawBytes
|
||||
for rows.Next() {
|
||||
err = rows.Scan(&ignore, &field, &storage, &ignore, &ignore, &ignore)
|
||||
if err != nil {
|
||||
log.Print(err)
|
||||
return
|
||||
}
|
||||
fmt.Println(field, storage)
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
{-# LANGUAGE OverloadedStrings #-}
|
||||
|
||||
import Database.SQLite.Simple
|
||||
|
||||
main = do
|
||||
db <- open "postal.db"
|
||||
execute_ db "\
|
||||
\CREATE TABLE address (\
|
||||
\addrID INTEGER PRIMARY KEY AUTOINCREMENT, \
|
||||
\addrStreet TEXT NOT NULL, \
|
||||
\addrCity TEXT NOT NULL, \
|
||||
\addrState TEXT NOT NULL, \
|
||||
\addrZIP TEXT NOT NULL \
|
||||
\)"
|
||||
close db
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
Create__hd 'Address';noun define
|
||||
addrID autoid;
|
||||
addrStreet varchar
|
||||
addrCity varchar
|
||||
addrState char
|
||||
addrZip char
|
||||
)
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
using SQLite
|
||||
|
||||
db = SQLite.DB()
|
||||
SQLite.execute!(db, """\
|
||||
CREATE TABLE address (
|
||||
addrID INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
addrStreet TEXT NOT NULL,
|
||||
addrCity TEXT NOT NULL,
|
||||
addrState TEXT NOT NULL,
|
||||
addrZIP TEXT NOT NULL)
|
||||
""")
|
||||
|
|
@ -0,0 +1,89 @@
|
|||
// Version 1.2.41
|
||||
|
||||
import java.io.File
|
||||
import java.io.RandomAccessFile
|
||||
|
||||
fun String.toFixedLength(len: Int) = this.padEnd(len).substring(0, len)
|
||||
|
||||
class Address(
|
||||
var name: String,
|
||||
var street: String = "",
|
||||
var city: String = "",
|
||||
var state: String = "",
|
||||
var zipCode: String = "",
|
||||
val autoId: Boolean = true
|
||||
) {
|
||||
var id = 0L
|
||||
private set
|
||||
|
||||
init {
|
||||
if (autoId) id = ++nextId
|
||||
}
|
||||
|
||||
companion object {
|
||||
private var nextId = 0L
|
||||
|
||||
const val RECORD_LENGTH = 127 // including 2 bytes for UTF string length
|
||||
|
||||
fun readRecord(file: File, id: Long): Address {
|
||||
val raf = RandomAccessFile(file, "r")
|
||||
val seekPoint = (id - 1) * RECORD_LENGTH
|
||||
raf.use {
|
||||
it.seek(seekPoint)
|
||||
val id2 = it.readLong()
|
||||
if (id != id2) {
|
||||
println("Database is corrupt")
|
||||
System.exit(1)
|
||||
}
|
||||
val text = it.readUTF()
|
||||
val name = text.substring(0, 30).trimEnd()
|
||||
val street = text.substring(30, 80).trimEnd()
|
||||
val city = text.substring(80, 105).trimEnd()
|
||||
val state = text.substring(105, 107)
|
||||
val zipCode = text.substring(107).trimEnd()
|
||||
val a = Address(name, street, city, state, zipCode, false)
|
||||
a.id = id
|
||||
return a
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun toString() =
|
||||
"Id : ${this.id}\n" +
|
||||
"Name : $name\n" +
|
||||
"Street : $street\n" +
|
||||
"City : $city\n" +
|
||||
"State : $state\n" +
|
||||
"Zip Code : $zipCode\n"
|
||||
|
||||
fun writeRecord(file: File) {
|
||||
val raf = RandomAccessFile(file, "rw")
|
||||
val text =
|
||||
name.toFixedLength(30) +
|
||||
street.toFixedLength(50) +
|
||||
city.toFixedLength(25) +
|
||||
state +
|
||||
zipCode.toFixedLength(10)
|
||||
val seekPoint = (id - 1) * RECORD_LENGTH
|
||||
raf.use {
|
||||
it.seek(seekPoint)
|
||||
it.writeLong(id)
|
||||
it.writeUTF(text)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
val file = File("addresses.dat")
|
||||
val addresses = listOf(
|
||||
Address("FSF Inc.", "51 Franklin Street", "Boston", "MA", "02110-1301"),
|
||||
Address("The White House", "The Oval Office, 1600 Pennsylvania Avenue NW", "Washington", "DC", "20500")
|
||||
)
|
||||
// write the address records to the file
|
||||
addresses.forEach { it.writeRecord(file) }
|
||||
|
||||
// now read them back in reverse order and print them out
|
||||
for (i in 2 downTo 1) {
|
||||
println(Address.readRecord(file, i.toLong()))
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
// connect to a Mysql database
|
||||
inline(-database = 'rosettatest', -sql = "CREATE TABLE `address` (
|
||||
`id` int(11) NOT NULL auto_increment,
|
||||
`street` varchar(50) NOT NULL default '',
|
||||
`city` varchar(25) NOT NULL default '',
|
||||
`state` char(2) NOT NULL default '',
|
||||
`zip` char(10) NOT NULL default '',
|
||||
PRIMARY KEY (`id`)
|
||||
);
|
||||
") => {^
|
||||
error_msg
|
||||
^}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
-- Import module
|
||||
local sql = require("ljsqlite3")
|
||||
|
||||
-- Open connection to database file
|
||||
local conn = sql.open("address.sqlite")
|
||||
|
||||
-- Create address table unless it already exists
|
||||
conn:exec[[
|
||||
CREATE TABLE IF NOT EXISTS address(
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
street TEXT NOT NULL,
|
||||
city TEXT NOT NULL,
|
||||
state TEXT NOT NULL,
|
||||
zip TEXT NOT NULL)
|
||||
]]
|
||||
|
||||
-- Explicitly close connection
|
||||
conn:close()
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
TableCreation="CREATE TABLE address (
|
||||
addrID INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
addrStreet TEXT NOT NULL, addrCity TEXT NOT NULL,
|
||||
addrState TEXT NOT NULL, addrZIP TEXT NOT NULL )";
|
||||
Needs["DatabaseLink`"]
|
||||
conn=OpenSQLConnection[ JDBC[ "mysql","databases:1234/conn_test"], "Username" -> "test"]
|
||||
SQLExecute[ conn, TableCreation]
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
CREATE TABLE `Address` (
|
||||
`addrID` int(11) NOT NULL auto_increment,
|
||||
`addrStreet` varchar(50) NOT NULL default '',
|
||||
`addrCity` varchar(25) NOT NULL default '',
|
||||
`addrState` char(2) NOT NULL default '',
|
||||
`addrZIP` char(10) NOT NULL default '',
|
||||
PRIMARY KEY (`addrID`)
|
||||
);
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
/* NetRexx */
|
||||
options replace format comments java crossref symbols binary
|
||||
|
||||
import java.sql.Connection
|
||||
import java.sql.Statement
|
||||
import java.sql.SQLException
|
||||
import java.sql.DriverManager
|
||||
|
||||
class RTableCreate01 public
|
||||
properties private constant
|
||||
addressDDL = String '' -
|
||||
' create table Address' -
|
||||
' (' -
|
||||
' addrID integer primary key generated by default as identity,' -
|
||||
' addrStreet varchar(50) not null,' -
|
||||
' addrCity varchar(50) not null,' -
|
||||
' addrState char(2) not null,' -
|
||||
' addrZip char(10) not null' -
|
||||
' )'
|
||||
driver = String 'org.apache.derby.jdbc.EmbeddedDriver'
|
||||
dbName = String 'db/rosetta_code'
|
||||
|
||||
method createTable() public static
|
||||
connectionURL = String
|
||||
conn = java.sql.Connection
|
||||
sqlStatement = java.sql.Statement
|
||||
do
|
||||
Class.forName(driver)
|
||||
connectionURL = 'jdbc:derby:' || dbName || ';' || 'create=true'
|
||||
conn = DriverManager.getConnection(connectionURL)
|
||||
sqlStatement = conn.createStatement()
|
||||
say 'Creating table'
|
||||
sqlStatement.execute(addressDDL)
|
||||
say 'Table creation complete'
|
||||
sqlStatement.close()
|
||||
conn.close()
|
||||
do
|
||||
-- In embedded mode, an application should shut down Derby.
|
||||
-- Shutdown throws the XJ015 exception to confirm success.
|
||||
connectionURL = 'jdbc:derby:' || ';' || 'shutdown=true'
|
||||
DriverManager.getConnection(connectionURL)
|
||||
catch sex = SQLException
|
||||
if sex.getSQLState().equals("XJ015") then do
|
||||
say 'Database shut down normally'
|
||||
end
|
||||
else do
|
||||
say 'Database did not shut down normally'
|
||||
signal sex
|
||||
end
|
||||
end
|
||||
catch sex = SQLException
|
||||
sex.printStackTrace()
|
||||
catch ex = ClassNotFoundException
|
||||
ex.printStackTrace()
|
||||
end
|
||||
return
|
||||
|
||||
method main(args = String[]) public static
|
||||
createTable()
|
||||
return
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
import db_sqlite as db
|
||||
#import db_mysql as db
|
||||
#import db_postgres as db
|
||||
|
||||
const
|
||||
connection = ":memory:"
|
||||
user = "foo"
|
||||
pass = "bar"
|
||||
database = "db"
|
||||
|
||||
var c = open(connection, user, pass, database)
|
||||
c.exec sql"""CREATE TABLE address (
|
||||
addrID INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
addrStreet TEXT NOT NULL,
|
||||
addrCity TEXT NOT NULL,
|
||||
addrState TEXT NOT NULL,
|
||||
addrZIP TEXT NOT NULL)"""
|
||||
c.close()
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
/* REXX ***************************************************************
|
||||
* 17.05.2013 Walter Pachl translated from REXX version 2
|
||||
* nice try? improvements are welcome as I am rather unexperienced
|
||||
* 18.05.2013 the array may contain a variety of objects!
|
||||
**********************************************************************/
|
||||
alist=.array~new
|
||||
alist[1]=.addr~new('Boston','MA','51 Franklin Street',,'FSF Inc.',,
|
||||
'02110-1301')
|
||||
alist[2]='not an address at all'
|
||||
alist[3]=.addr~new('Washington','DC','The Oval Office',,
|
||||
'1600 Pennsylvania Avenue NW','The White House',20500)
|
||||
Do i=1 To alist~items
|
||||
a=alist[i]
|
||||
If a~isinstanceof(.addr) Then
|
||||
a~show
|
||||
End
|
||||
|
||||
::class addr
|
||||
::attribute city
|
||||
::attribute state
|
||||
::attribute addr
|
||||
::attribute addr2
|
||||
::attribute name
|
||||
::attribute zip
|
||||
|
||||
::method init
|
||||
Parse Arg self~city,,
|
||||
self~state,,
|
||||
self~addr,,
|
||||
self~addr2,,
|
||||
self~name,,
|
||||
self~zip
|
||||
|
||||
::method show
|
||||
Say ' name -->' self~name
|
||||
Say ' addr -->' self~addr
|
||||
If self~addr2<>'' Then Say ' addr2 -->' self~addr2
|
||||
Say ' city -->' self~city
|
||||
Say ' state -->' self~state
|
||||
Say ' zip -->' self~zip
|
||||
Say copies('-',40)
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
declare
|
||||
[Sqlite] = {Module.link ['x-ozlib:/sqlite/Sqlite.ozf']}
|
||||
|
||||
DB = {Sqlite.open 'test.db'}
|
||||
in
|
||||
try
|
||||
|
||||
{Sqlite.exec DB
|
||||
"CREATE TABLE address ("
|
||||
#"addrID INTEGER PRIMARY KEY,"
|
||||
#"addrStreet TEXT NOT NULL,"
|
||||
#"addrCity TEXT NOT NULL,"
|
||||
#"addrState TEXT NOT NULL,"
|
||||
#"addrZIP TEXT NOT NULL"
|
||||
#")" _}
|
||||
|
||||
catch E then
|
||||
{Inspector.configure widgetShowStrings true}
|
||||
{Inspect E}
|
||||
finally
|
||||
{Sqlite.close DB}
|
||||
end
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<?php
|
||||
$db = new SQLite3(':memory:');
|
||||
$db->exec("
|
||||
CREATE TABLE address (
|
||||
addrID INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
addrStreet TEXT NOT NULL,
|
||||
addrCity TEXT NOT NULL,
|
||||
addrState TEXT NOT NULL,
|
||||
addrZIP TEXT NOT NULL
|
||||
)
|
||||
");
|
||||
?>
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
use DBI;
|
||||
|
||||
my $db = DBI->connect('DBI:mysql:database:server','login','password');
|
||||
|
||||
my $statment = <<EOF;
|
||||
CREATE TABLE `Address` (
|
||||
`addrID` int(11) NOT NULL auto_increment,
|
||||
`addrStreet` varchar(50) NOT NULL default '',
|
||||
`addrCity` varchar(25) NOT NULL default '',
|
||||
`addrState` char(2) NOT NULL default '',
|
||||
`addrZIP` char(10) NOT NULL default '',
|
||||
PRIMARY KEY (`addrID`)
|
||||
);
|
||||
EOF
|
||||
|
||||
my $exec = $db->prepare($statment);
|
||||
$exec->execute;
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
(notonline)-->
|
||||
<span style="color: #008080;">without</span> <span style="color: #008080;">js</span> <span style="color: #000080;font-style:italic;">-- (file i/o)</span>
|
||||
<span style="color: #008080;">include</span> <span style="color: #000000;">pSQLite</span><span style="color: #0000FF;">.</span><span style="color: #000000;">e</span>
|
||||
<span style="color: #008080;">constant</span> <span style="color: #000000;">sqlcode</span> <span style="color: #0000FF;">=</span> <span style="color: #008000;">"""
|
||||
CREATE TABLE address (
|
||||
addrID INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
addrStreet TEXT NOT NULL,
|
||||
addrCity TEXT NOT NULL,
|
||||
addrState TEXT NOT NULL,
|
||||
addrZIP TEXT NOT NULL)"""</span>
|
||||
|
||||
<span style="color: #000000;">sqlite3</span> <span style="color: #000000;">db</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">sqlite3_open</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"address.sqlite"</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #004080;">integer</span> <span style="color: #000000;">res</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">sqlite3_exec</span><span style="color: #0000FF;">(</span><span style="color: #000000;">db</span><span style="color: #0000FF;">,</span><span style="color: #000000;">sqlcode</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #000000;">res</span><span style="color: #0000FF;">=</span><span style="color: #000000;">SQLITE_OK</span> <span style="color: #008080;">then</span>
|
||||
<span style="color: #000000;">sqlite3_close</span><span style="color: #0000FF;">(</span><span style="color: #000000;">db</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">else</span>
|
||||
<span style="color: #000080;font-style:italic;">-- can show eg "sqlite3_exec error: 1 [table address already exists]"</span>
|
||||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"sqlite3_exec error: %d [%s]\n"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">res</span><span style="color: #0000FF;">,</span><span style="color: #000000;">sqlite_last_exec_err</span><span style="color: #0000FF;">})</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<!--
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
(class +Adr +Entity)
|
||||
(rel nm (+Sn +Idx +String)) # Name [Soundex index]
|
||||
(rel str (+String)) # Street
|
||||
(rel zip (+Ref +String)) # ZIP [Non-unique index]
|
||||
(rel cit (+Fold +Idx +String)) # City [Folded substring index]
|
||||
(rel st (+String)) # State
|
||||
(rel tel (+Fold +Ref +String)) # Phone [Folded non-unique index]
|
||||
(rel em (+Ref +String)) # EMail [Non-unique index]
|
||||
(rel txt (+Blob)) # Memo
|
||||
(rel jpg (+Blob)) # Photo
|
||||
|
||||
(pool "address.db") # Create database
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
(show
|
||||
(new! '(+Adr) # Create a record
|
||||
'nm "FSF Inc."
|
||||
'str "51 Franklin St"
|
||||
'st "Boston, MA"
|
||||
'zip "02110-1301" ) )
|
||||
|
|
@ -0,0 +1 @@
|
|||
(select nm zip +Adr nm "FSF") # Select name, zip from Adr where name = FSF*
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
Import-Module -Name PSSQLite
|
||||
|
||||
|
||||
## Create a database and a table
|
||||
$dataSource = ".\Addresses.db"
|
||||
$query = "CREATE TABLE SSADDRESS (Id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
LastName TEXT NOT NULL,
|
||||
FirstName TEXT NOT NULL,
|
||||
Address TEXT NOT NULL,
|
||||
City TEXT NOT NULL,
|
||||
State CHAR(2) NOT NULL,
|
||||
Zip CHAR(5) NOT NULL
|
||||
)"
|
||||
|
||||
Invoke-SqliteQuery -Query $Query -DataSource $DataSource
|
||||
|
||||
|
||||
## Insert some data
|
||||
$query = "INSERT INTO SSADDRESS ( FirstName, LastName, Address, City, State, Zip)
|
||||
VALUES (@FirstName, @LastName, @Address, @City, @State, @Zip)"
|
||||
|
||||
Invoke-SqliteQuery -DataSource $DataSource -Query $query -SqlParameters @{
|
||||
LastName = "Monster"
|
||||
FirstName = "Cookie"
|
||||
Address = "666 Sesame St"
|
||||
City = "Holywood"
|
||||
State = "CA"
|
||||
Zip = "90013"
|
||||
}
|
||||
|
||||
|
||||
## View the data
|
||||
Invoke-SqliteQuery -DataSource $DataSource -Query "SELECT * FROM SSADDRESS" | FormatTable -AutoSize
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
UseSQLiteDatabase()
|
||||
Procedure CheckDatabaseUpdate(Database, Query$)
|
||||
Result = DatabaseUpdate(Database, Query$)
|
||||
If Result = 0
|
||||
Print(DatabaseError())
|
||||
EndIf
|
||||
ProcedureReturn Result
|
||||
EndProcedure
|
||||
openconsole()
|
||||
DatabaseFile$ = GetCurrentDirectory()+"/rosettadb.sdb"
|
||||
If CreateFile(0, DatabaseFile$)
|
||||
CloseFile(0)
|
||||
If OpenDatabase(0, DatabaseFile$, "", "")
|
||||
CheckDatabaseUpdate(0,"CREATE TABLE address ( addrID INTEGER PRIMARY KEY AUTOINCREMENT, addrStreet TEXT Not NULL, addrCity TEXT Not NULL, addrState TEXT Not NULL, addrZIP TEXT Not NULL)")
|
||||
CloseDatabase(0)
|
||||
Else
|
||||
print("Can't open database !")
|
||||
EndIf
|
||||
Else
|
||||
print("Can't create the database file !")
|
||||
EndIf
|
||||
closeconsole()
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
>>> import sqlite3
|
||||
>>> conn = sqlite3.connect(':memory:')
|
||||
>>> conn.execute('''CREATE TABLE address (
|
||||
addrID INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
addrStreet TEXT NOT NULL,
|
||||
addrCity TEXT NOT NULL,
|
||||
addrState TEXT NOT NULL,
|
||||
addrZIP TEXT NOT NULL
|
||||
)''')
|
||||
<sqlite3.Cursor object at 0x013265C0>
|
||||
>>>
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
/*REXX program creates, builds, and displays a table of given U.S.A. postal addresses.*/
|
||||
@usa.=; @usa.0=0; $='@USA.' /*initialize array and first value.*/
|
||||
@usa.0=@usa.0 + 1 /*bump the unique number for usage.*/
|
||||
call USA '_city' , 'Boston'
|
||||
call USA '_state' , 'MA'
|
||||
call USA '_addr1' , "51 Franklin Street"
|
||||
call USA '_name' , "FSF Inc."
|
||||
call USA '_zip' , '02110-1301'
|
||||
@usa.0=@usa.0 + 1 /*bump the unique number for usage.*/
|
||||
call USA '_city' , 'Washington'
|
||||
call USA '_state' , 'DC'
|
||||
call USA '_addr1' , "The Oval Office"
|
||||
call USA '_addr2' , "1600 Pennsylvania Avenue NW"
|
||||
call USA '_name' , "The White House"
|
||||
call USA '_zip' , 20500 /*no need for quotes for a number. */
|
||||
call USA 'list'
|
||||
exit /*stick a fork in it, we're all done. */
|
||||
/*──────────────────────────────────────────────────────────────────────────────────────*/
|
||||
tell: parse arg a; z=value($||#"."a); if z\='' then say right(translate(a,,'_'),9) "──►" z
|
||||
return
|
||||
/*──────────────────────────────────────────────────────────────────────────────────────*/
|
||||
USA: procedure expose @usa. $; parse arg what; arg ?
|
||||
if ?=='LIST' then do #=1 for @usa.0
|
||||
call tell '_name'
|
||||
do j=1 until z=''; call tell "_addr"j; end
|
||||
call tell '_city'
|
||||
call tell '_state'
|
||||
call tell '_zip'
|
||||
say copies('─', 45)
|
||||
end /*#*/
|
||||
else do; call value $ || @usa.0'.'what , arg(2)
|
||||
call value $ || @usa.0'.upHist' , userid() date() time()
|
||||
end
|
||||
return
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
/* REXX ***************************************************************
|
||||
* 17.05.2013 Walter Pachl
|
||||
* should work with every REXX.
|
||||
* I use 0xxx for the tail because this can't be modified
|
||||
**********************************************************************/
|
||||
USA.=''; USA.0=0
|
||||
Call add_usa 'Boston','MA','51 Franklin Street',,'FSF Inc.',,
|
||||
'02110-1301'
|
||||
Call add_usa 'Washington','DC','The Oval Office',,
|
||||
'1600 Pennsylvania Avenue NW','The White House',20500
|
||||
call list_usa
|
||||
Exit
|
||||
|
||||
add_usa:
|
||||
z=usa.0+1
|
||||
Parse Arg usa.z.0city,,
|
||||
usa.z.0state,,
|
||||
usa.z.0addr,,
|
||||
usa.z.0addr2,,
|
||||
usa.z.0name,,
|
||||
usa.z.0zip
|
||||
usa.0=z
|
||||
Return
|
||||
|
||||
list_usa:
|
||||
Do z=1 To usa.0
|
||||
Say ' name -->' usa.z.0name
|
||||
Say ' addr -->' usa.z.0addr
|
||||
If usa.z.0addr2<>'' Then Say ' addr2 -->' usa.z.0addr2
|
||||
Say ' city -->' usa.z.0city
|
||||
Say ' state -->' usa.z.0state
|
||||
Say ' zip -->' usa.z.0zip
|
||||
Say copies('-',40)
|
||||
End
|
||||
Return
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
#lang at-exp racket
|
||||
|
||||
(require db)
|
||||
(define postal (sqlite3-connect #:database "/tmp/postal.db" #:mode 'create))
|
||||
|
||||
(define (add! name street city state zip)
|
||||
(query-exec postal
|
||||
@~a{INSERT INTO addresses (name, street, city, state, zip)
|
||||
VALUES (?, ?, ?, ?, ?)}
|
||||
name street city state zip))
|
||||
|
||||
(unless (table-exists? postal "addresses")
|
||||
(query-exec postal
|
||||
@~a{CREATE TABLE addresses(
|
||||
id INTEGER PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
street TEXT NOT NULL,
|
||||
city TEXT NOT NULL,
|
||||
state TEXT NOT NULL,
|
||||
zip TEXT NOT NULL)}))
|
||||
|
||||
(add! "FSF Inc."
|
||||
"51 Franklin St"
|
||||
"Boston"
|
||||
"MA"
|
||||
"02110-1301")
|
||||
(add! "The White House"
|
||||
"1600 Pennsylvania Avenue NW"
|
||||
"Washington"
|
||||
"DC"
|
||||
"20500")
|
||||
(add! "National Security Council"
|
||||
"1700 Pennsylvania Avenue NW"
|
||||
"Washington"
|
||||
"DC"
|
||||
"20500")
|
||||
|
||||
(printf "Addresses:\n")
|
||||
(for ([r (query-rows postal "SELECT * FROM addresses")])
|
||||
(printf " ~a.\n" (string-join (cdr (vector->list r)) ", ")))
|
||||
(newline)
|
||||
|
||||
(printf "By State+ZIP:\n")
|
||||
(for ([z (query-rows postal "SELECT * FROM addresses"
|
||||
#:group #("state" "zip"))])
|
||||
(printf " ~a, ~a:\n" (vector-ref z 0) (vector-ref z 1))
|
||||
(for ([r (vector-ref z 2)])
|
||||
(printf " ~a.\n" (string-join (cdr (vector->list r)) ", "))))
|
||||
|
||||
(disconnect postal)
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
use DBIish;
|
||||
|
||||
my $dbh = DBIish.connect('SQLite', :database<addresses.sqlite3>);
|
||||
|
||||
my $sth = $dbh.do(q:to/STATEMENT/);
|
||||
DROP TABLE IF EXISTS Address;
|
||||
CREATE TABLE Address (
|
||||
addrID INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
addrStreet TEXT NOT NULL,
|
||||
addrCity TEXT NOT NULL,
|
||||
addrState TEXT NOT NULL,
|
||||
addrZIP TEXT NOT NULL
|
||||
)
|
||||
STATEMENT
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
# Project : Table creation/Postal addresses
|
||||
|
||||
load "stdlib.ring"
|
||||
oSQLite = sqlite_init()
|
||||
|
||||
sqlite_open(oSQLite,"mytest.db")
|
||||
|
||||
sql = "CREATE TABLE ADDRESS (" +
|
||||
"addrID INT NOT NULL," +
|
||||
"street CHAR(50) NOT NULL," +
|
||||
"city CHAR(25) NOT NULL," +
|
||||
"state CHAR(2), NOT NULL" +
|
||||
"zip CHAR(20) NOT NULL);"
|
||||
|
||||
sqlite_execute(oSQLite,sql)
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
require 'pstore'
|
||||
require 'set'
|
||||
|
||||
Address = Struct.new :id, :street, :city, :state, :zip
|
||||
|
||||
db = PStore.new("addresses.pstore")
|
||||
db.transaction do
|
||||
db[:next] ||= 0 # Next available Address#id
|
||||
db[:ids] ||= Set[] # Set of all ids in db
|
||||
end
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
db.transaction do
|
||||
id = (db[:next] += 1)
|
||||
db[id] = Address.new(id,
|
||||
"1600 Pennsylvania Avenue NW",
|
||||
"Washington", "DC", 20500)
|
||||
db[:ids].add id
|
||||
end
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
require 'sqlite3'
|
||||
|
||||
db = SQLite3::Database.new(':memory:')
|
||||
db.execute("
|
||||
CREATE TABLE address (
|
||||
addrID INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
addrStreet TEXT NOT NULL,
|
||||
addrCity TEXT NOT NULL,
|
||||
addrState TEXT NOT NULL,
|
||||
addrZIP TEXT NOT NULL
|
||||
)
|
||||
")
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
sqliteconnect #mem, ":memory:" ' make handle #mem
|
||||
mem$ = "
|
||||
CREATE TABLE address (
|
||||
addrID INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
addrStreet TEXT NOT NULL,
|
||||
addrCity TEXT NOT NULL,
|
||||
addrState TEXT NOT NULL,
|
||||
addrZIP TEXT NOT NULL
|
||||
)"
|
||||
#mem execute(mem$)
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
PROC SQL;
|
||||
CREATE TABLE ADDRESS
|
||||
(
|
||||
ADDRID CHAR(8)
|
||||
,STREET CHAR(50)
|
||||
,CITY CHAR(25)
|
||||
,STATE CHAR(2)
|
||||
,ZIP CHAR(20)
|
||||
)
|
||||
;QUIT;
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
CREATE TABLE Address (
|
||||
addrID Integer generated by default as identity,
|
||||
addrStreet Varchar(50) not null,
|
||||
addrCity Varchar(25) not null,
|
||||
addrState Char(2) not null,
|
||||
addrZIP Char(10) not null
|
||||
);
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
(use sql-de-lite)
|
||||
|
||||
(define *db* (open-database "addresses"))
|
||||
|
||||
(exec ; create and run the SQL statement
|
||||
(sql *db*
|
||||
"CREATE TABLE address (
|
||||
addrID INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
addrStreet TEXT NOT NULL,
|
||||
addrCity TEXT NOT NULL,
|
||||
addrState TEXT NOT NULL,
|
||||
addrZIP TEXT NOT NULL
|
||||
)"
|
||||
))
|
||||
|
||||
(close-database *db*) ; finally, close database
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
require('DBI');
|
||||
|
||||
var db = %s'DBI'.connect('DBI:mysql:database:server','login','password');
|
||||
|
||||
var statment = <<'EOF';
|
||||
CREATE TABLE `Address` (
|
||||
`addrID` int(11) NOT NULL auto_increment,
|
||||
`addrStreet` varchar(50) NOT NULL default '',
|
||||
`addrCity` varchar(25) NOT NULL default '',
|
||||
`addrState` char(2) NOT NULL default '',
|
||||
`addrZIP` char(10) NOT NULL default '',
|
||||
PRIMARY KEY (`addrID`)
|
||||
);
|
||||
EOF
|
||||
|
||||
var exec = db.prepare(statment);
|
||||
exec.execute;
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
clear
|
||||
gen str8 addrid=""
|
||||
gen str50 street=""
|
||||
gen str25 city=""
|
||||
gen str2 state=""
|
||||
gen str20 zip=""
|
||||
save address
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
package require sqlite3
|
||||
|
||||
sqlite3 db address.db
|
||||
db eval {
|
||||
CREATE TABLE address (
|
||||
addrID INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
addrStreet TEXT NOT NULL,
|
||||
addrCity TEXT NOT NULL,
|
||||
addrState TEXT NOT NULL,
|
||||
addrZIP TEXT NOT NULL
|
||||
)
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
CREATE TABLE #Address (
|
||||
addrID int NOT NULL Identity(1,1) PRIMARY KEY,
|
||||
addrStreet varchar(50) NOT NULL ,
|
||||
addrCity varchar(25) NOT NULL ,
|
||||
addrState char(2) NOT NULL ,
|
||||
addrZIP char(10) NOT NULL
|
||||
)
|
||||
drop table #Address
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
Option Explicit
|
||||
|
||||
Dim objFSO, DBSource
|
||||
|
||||
Set objFSO = CreateObject("Scripting.FileSystemObject")
|
||||
|
||||
DBSource = objFSO.GetParentFolderName(WScript.ScriptFullName) & "\postal_address.accdb"
|
||||
|
||||
With CreateObject("ADODB.Connection")
|
||||
.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & DBSource
|
||||
.Execute "CREATE TABLE ADDRESS (STREET VARCHAR(30) NOT NULL," &_
|
||||
"CITY VARCHAR(30) NOT NULL, STATE CHAR(2) NOT NULL,ZIP CHAR(5) NOT NULL)"
|
||||
.Close
|
||||
End With
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
CLOSE DATABASES ALL
|
||||
CREATE DATABASE usdata.dbc
|
||||
SET NULL OFF
|
||||
CREATE TABLE address.dbf ;
|
||||
(id I AUTOINC NEXTVALUE 1 STEP 1 PRIMARY KEY COLLATE "Machine", ;
|
||||
street V(50), city V(25), state C(2), zipcode C(10))
|
||||
CLOSE DATABASES ALL
|
||||
*!* To use
|
||||
CLOSE DATABASES ALL
|
||||
OPEN DATABASE usdata.dbc
|
||||
USE address.dbf SHARED
|
||||
|
|
@ -0,0 +1,106 @@
|
|||
import "/dynamic" for Enum, Tuple
|
||||
import "/fmt" for Fmt
|
||||
import "/sort" for Cmp, Sort
|
||||
|
||||
var FieldType = Enum.create("FieldType", ["text", "num", "int", "bool"])
|
||||
|
||||
var Field = Tuple.create("Field", ["name", "fieldType", "maxLen"])
|
||||
|
||||
class Table {
|
||||
construct new(name, fields, keyIndex) {
|
||||
_name = name
|
||||
_fields = fields
|
||||
_keyIndex = keyIndex // the zero based index of the field to sort on
|
||||
_records = []
|
||||
_fmt = ""
|
||||
for (f in _fields) {
|
||||
var c = f.name.count
|
||||
var l = f.maxLen.max(c)
|
||||
if (f.fieldType == FieldType.text ||f.fieldType == FieldType.bool) {
|
||||
l = -l
|
||||
}
|
||||
_fmt = _fmt + "$%(l)s "
|
||||
}
|
||||
_fmt = _fmt.trimEnd()
|
||||
}
|
||||
|
||||
name { _name }
|
||||
|
||||
showFields() {
|
||||
System.print("Fields for %(_name) table:\n")
|
||||
Fmt.print("$-20s $4s $s", "name", "type", "maxlen")
|
||||
System.print("-" * 33)
|
||||
for (f in _fields) {
|
||||
Fmt.print("$-20s $-4s $d", f.name, FieldType.members[f.fieldType], f.maxLen)
|
||||
}
|
||||
}
|
||||
|
||||
cmp_ { Fn.new { |r1, r2|
|
||||
return (Num.fromString(r1[_keyIndex]) - Num.fromString(r2[_keyIndex])).sign
|
||||
}}
|
||||
|
||||
addRecord(record) {
|
||||
var items = record.split(", ")
|
||||
_records.add(items)
|
||||
Sort.insertion(_records, cmp_) // move new record into sorted order
|
||||
}
|
||||
|
||||
showRecords() {
|
||||
System.print("Records for %(_name) table:\n")
|
||||
var h = Fmt.slwrite(_fmt, _fields.map { |f| f.name }.toList)
|
||||
System.print(h)
|
||||
System.print("-" * h.count)
|
||||
for (r in _records) {
|
||||
Fmt.lprint(_fmt, r)
|
||||
}
|
||||
}
|
||||
|
||||
removeRecord(key) {
|
||||
for (i in 0..._records.count) {
|
||||
if (_records[i][_keyIndex] == key.toString) {
|
||||
_records.removeAt(i)
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
findRecord(key) {
|
||||
for (i in 0..._records.count) {
|
||||
if (_records[i][_keyIndex] == key.toString) {
|
||||
return _records[i].join(", ")
|
||||
}
|
||||
}
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
var fields = []
|
||||
fields.add(Field.new("id", FieldType.int, 2))
|
||||
fields.add(Field.new("name", FieldType.text, 25))
|
||||
fields.add(Field.new("street", FieldType.text, 50))
|
||||
fields.add(Field.new("city", FieldType.text, 15))
|
||||
fields.add(Field.new("state", FieldType.text, 2))
|
||||
fields.add(Field.new("zipCode", FieldType.text, 10))
|
||||
|
||||
// create table
|
||||
var table = Table.new("Addresses", fields, 0)
|
||||
|
||||
// add records in unsorted order
|
||||
table.addRecord("2, FSF Inc., 51 Franklin Street, Boston, MA, 02110-1301")
|
||||
table.addRecord("1, The White House, The Oval Office 1600 Pennsylvania Avenue NW, Washington, DC, 20500")
|
||||
table.addRecord("3, National Security Council, 1700 Pennsylvania Avenue NW, Washington, DC, 20500")
|
||||
|
||||
// show the table's fields
|
||||
table.showFields()
|
||||
System.print()
|
||||
// show the table's records in sorted order
|
||||
table.showRecords()
|
||||
|
||||
// find a record by key
|
||||
System.print("\nThe record with an id of 2 is:")
|
||||
System.print(table.findRecord(2))
|
||||
|
||||
// delete a record by key
|
||||
table.removeRecord(1)
|
||||
System.print("\nThe record with an id of 1 will be deleted, leaving:\n")
|
||||
table.showRecords()
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
const NM="address.db";
|
||||
dbExec(NM,"create table address (street, city, state, zip);");
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
fcn dbExec(db,qry){ dbErrorCheck(dbMakeQuery(db,qry),String(db," : ",qry)) }
|
||||
fcn dbMakeQuery(db,qry){
|
||||
qry=dbEscapeQuery(qry) + ";";
|
||||
cmd:=String("echo \"", qry, "\" | sqlite ", db);
|
||||
reg r;
|
||||
p:=System.popen(cmd,"r");
|
||||
try{ r=p.readln(*) }catch(TheEnd){} // r==Void if sqlite doesn't print
|
||||
p.close();
|
||||
r
|
||||
}
|
||||
fcn dbEscapeQuery(qry){ qry.replace(0'|"|, 0'|\"|) }
|
||||
fcn dbErrorCheck(listOfStrings){
|
||||
if(listOfStrings and listOfStrings[-1].holds("SQL error"))
|
||||
throw(Exception.IOError(listOfStrings.concat().strip()));
|
||||
True
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue