package main import ( "database/sql" "log" _ "github.com/mattn/go-sqlite3" ) // Book is a placeholder for book type Word struct { source_id int previous string current string next string count int } type Source struct { source_id int name string } func prep_query(db *sql.DB, q string) (*sql.Stmt){ statement, err := db.Prepare(q) if err != nil { log.Println(err) log.Println(statement) } return statement } func main() { db, _ := sql.Open("sqlite3", "words.db") log.Println("Nuking tables...") prep_query(db, "DROP TABLE IF EXISTS words").Exec() prep_query(db, "DROP TABLE IF EXISTS sources").Exec() log.Println("Done nuking tables!") log.Println("Creating tables...") prep_query(db, ` CREATE TABLE IF NOT EXISTS sources ( source_id INTEGER PRIMARY KEY, name VARCHAR(64) ); `).Exec() prep_query(db, ` CREATE TABLE IF NOT EXISTS words ( word_id INTEGER PRIMARY KEY, source_id INTEGER, previous VARCHAR(64) DEFAULT NULL, current VARCHAR(64), next VARCHAR(64) DEFAULT NULL, count INTEGER DEFAULT 0, FOREIGN KEY(source_id) REFERENCES sources(source_id) ); `).Exec() log.Println("Done making tables!") log.Println("Making indexes...") prep_query(db, "CREATE INDEX words_sources_index ON words(source_id)").Exec() log.Println("Done making indexes!") log.Println("Inserting source/word...") prep_query(db, ` INSERT INTO sources (name) VALUES (?) `).Exec("Monqui") prep_query(db, ` INSERT INTO words (current, next, source_id) VALUES (?, ?, ?) `).Exec("My", "name", 1) log.Println("Inserted the source/word into database!") rows, _ := db.Query("SELECT source_id, name FROM sources") var tempSource Source for rows.Next() { rows.Scan(&tempSource.source_id, &tempSource.name) log.Printf("source_id:%d, name:%s\n", tempSource.source_id, tempSource.name) } rows, _ = db.Query("SELECT word_id, current, next, source_id FROM words") var tempWord Word for rows.Next() { rows.Scan(&tempWord.word_id, &tempWord.current, &tempWord.next, &tempWord.source_id) log.Printf( "word_id:%d, current:%s, next:%s, source_id:%d\n", tempWord.word_id, tempWord.current, tempWord.next, tempWord.source_id) } // Update prep_query(db, "UPDATE sources SET name=? WHERE source_id=?").Exec("Monqu2", 1) rows, _ = db.Query("SELECT source_id, name FROM sources") for rows.Next() { rows.Scan(&tempSource.source_id, &tempSource.name) log.Printf("source_id:%d, name:%s\n", tempSource.source_id, tempSource.name) } // /* // Delete statement, _ = db.Prepare("delete from books where id=?") statement.Exec(1) log.Println("Successfully deleted the book in database!") */ }