· 8 years ago · Apr 18, 2018, 08:42 PM
1//
2// CreateAccountViewController.swift
3// FashionCheck
4//
5// Created by Parker Mclain on 4/17/18.
6// Copyright © 2018 Parker Mclain. All rights reserved.
7//
8
9import UIKit
10import SQLite3
11
12class CreateAccountViewController: UIViewController {
13
14 var db: OpaquePointer?
15
16 @IBOutlet weak var emailTextfield: UITextField!
17 @IBOutlet weak var passwordTextfield: UITextField!
18 @IBOutlet weak var confirmPasswordTextfield: UITextField!
19
20 @IBOutlet weak var firstNameTextfield: UITextField!
21 @IBOutlet weak var lastNameTextfield: UITextField!
22 @IBOutlet weak var birthdayDatepicker: UIDatePicker!
23
24
25
26
27
28
29 override func viewDidLoad() {
30 super.viewDidLoad()
31
32 let fileURL = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
33 .appendingPathComponent("Database.sqlite")
34
35
36
37 print(fileURL.absoluteString)
38 // Do any additional setup after loading the view, typically from a nib.
39
40
41
42
43 if sqlite3_open(fileURL.path, &db) != SQLITE_OK {
44 print("error opening database")
45 }
46 /*
47 if sqlite3_exec(db, "DROP TABLE Users", nil, nil, nil) != SQLITE_OK {
48 let errmsg = String(cString: sqlite3_errmsg(db)!)
49 print("error creating table: \(errmsg)")
50 }
51 */
52
53 if sqlite3_exec(db, "CREATE TABLE IF NOT EXISTS Users (email TEXT, password TEXT, first_name TEXT, last_name TEXT)", nil, nil, nil) != SQLITE_OK {
54 let errmsg = String(cString: sqlite3_errmsg(db)!)
55 print("error creating table: \(errmsg)")
56 }
57
58
59
60 // Do any additional setup after loading the view.
61 }
62
63 override func didReceiveMemoryWarning() {
64 super.didReceiveMemoryWarning()
65 // Dispose of any resources that can be recreated.
66 }
67
68
69 /*
70 // MARK: - Navigation
71
72 // In a storyboard-based application, you will often want to do a little preparation before navigation
73 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
74 // Get the new view controller using segue.destinationViewController.
75 // Pass the selected object to the new view controller.
76 }
77 */
78
79 @IBAction func createAccountButton(_ sender: Any) {
80
81 let email: String = emailTextfield.text!
82 let password: String = passwordTextfield.text!
83 let confirmPassword: String = confirmPasswordTextfield.text!
84 let firstName: String = firstNameTextfield.text!
85 let lastName: String = lastNameTextfield.text!
86 let dateOfBirth: Date = birthdayDatepicker.date
87
88
89
90
91 print("Email: \(email)")
92 print("Password: \(password)")
93 print("Confirm Password: \(confirmPassword)")
94 print("First Name: \(firstName)")
95 print("Last Name: \(lastName)")
96 print("Birthday: \(dateOfBirth)")
97
98 var stmt: OpaquePointer?
99
100 let queryString = "INSERT INTO Users (email, password, first_Name, last_Name) VALUES (email,password,firstName,lastName)"
101
102 if sqlite3_prepare(db, queryString, -1, &stmt, nil) != SQLITE_OK{
103 let errmsg = String(cString: sqlite3_errmsg(db)!)
104 print("error preparing insert: \(errmsg)")
105 return
106 }
107
108
109
110 if sqlite3_bind_text(stmt, 1, email, -1, nil) != SQLITE_OK{
111 let errmsg = String(cString: sqlite3_errmsg(db)!)
112 print("failure binding name: \(errmsg)")
113 return
114 }
115
116 if sqlite3_bind_text(stmt, 2, password, -1, nil) != SQLITE_OK{
117 let errmsg = String(cString: sqlite3_errmsg(db)!)
118 print("failure binding name: \(errmsg)")
119 return
120 }
121
122 if sqlite3_bind_text(stmt, 3, firstName, -1, nil) != SQLITE_OK{
123 let errmsg = String(cString: sqlite3_errmsg(db)!)
124 print("failure binding name: \(errmsg)")
125 return
126 }
127
128 if sqlite3_bind_text(stmt, 4, lastName, -1, nil) != SQLITE_OK{
129 let errmsg = String(cString: sqlite3_errmsg(db)!)
130 print("failure binding name: \(errmsg)")
131 return
132 }
133
134 /*
135 if sqlite3_bind_text(stmt, 5, String(describing: dateOfBirth), -1, nil) != SQLITE_OK{
136 let errmsg = String(cString: sqlite3_errmsg(db)!)
137 print("failure binding name: \(errmsg)")
138 return
139 }*/
140
141
142 if sqlite3_step(stmt) != SQLITE_DONE {
143 let errmsg = String(cString: sqlite3_errmsg(db)!)
144 print("failure inserting user: \(errmsg)")
145 return
146 }
147
148 //textFieldName.text=""
149 //textFieldPowerRanking.text=""
150
151 //readValues()
152
153 print("Account Created!")
154
155 //readValues()
156
157 //sqlite3_close(db);
158
159
160
161 }
162
163 func readValues(){
164
165 let queryString = "SELECT * FROM Users"
166
167 var stmt:OpaquePointer?
168
169 if sqlite3_prepare(db, queryString, -1, &stmt, nil) != SQLITE_OK{
170 let errmsg = String(cString: sqlite3_errmsg(db)!)
171 print("error preparing insert: \(errmsg)")
172 return
173 }
174
175 while(sqlite3_step(stmt) == SQLITE_ROW){
176 let email = String(cString: sqlite3_column_text(stmt, 0))
177 let password = String(cString: sqlite3_column_text(stmt, 1))
178 let firstName = String(cString: sqlite3_column_text(stmt, 2))
179 let lastName = String(cString: sqlite3_column_text(stmt, 3))
180
181
182 print("Email: \(String(email)), Password: \(String(password)), First Name: \(String(firstName)), Last Name: \(String(lastName))")
183 //heroList.append(Hero(id: Int(id), name: String(describing: name), powerRanking: Int(powerrank)))
184 }
185
186 //self.tableViewHeroes.reloadData()
187 }
188
189
190
191
192}