-
Notifications
You must be signed in to change notification settings - Fork 0
/
DatabaseManager.cs
81 lines (69 loc) · 2.7 KB
/
DatabaseManager.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
using Microsoft.Data.Sqlite;
namespace ContactBook_PTDN_Project
{
internal class DatabaseManager
{
private const string _databaseName = "contact-book.db";
internal const string _contactsTableName = "Contacts";
internal const string _contactsColumnNameId = "id";
internal const string _contactsColumnNameFirstName = "first_name";
internal const string _contactsColumnNameLastName = "last_name";
internal const string _contactsColumnNameBirthdayTicks = "birthday_ticks";
internal const string _contactsColumnNamePhoneNumber = "phone_number";
internal const string _contactsColumnNameEmail = "email";
internal static void InitializeDatabase()
{
using var connection = new SqliteConnection($"DataSource={_databaseName}");
connection.Open();
var command = connection.CreateCommand();
command.CommandText =
@$"
CREATE TABLE IF NOT EXISTS {_contactsTableName}
(
{_contactsColumnNameId} TEXT PRIMARY KEY,
{_contactsColumnNameFirstName} TEXT NOT NULL,
{_contactsColumnNameLastName} TEXT NOT NULL,
{_contactsColumnNameBirthdayTicks} INTEGER NOT NULL,
{_contactsColumnNamePhoneNumber} TEXT,
{_contactsColumnNameEmail} TEXT
);
";
command.ExecuteNonQuery();
}
internal static int ExecuteCommand(string commandText, out string? errorMessage)
{
errorMessage = null;
using var connection = new SqliteConnection($"DataSource={_databaseName}");
connection.Open();
var command = connection.CreateCommand();
command.CommandText = commandText;
try
{
return command.ExecuteNonQuery();
}
catch (Exception ex)
{
errorMessage = ex.Message;
return 0;
}
}
internal static SqliteConnection? ExecuteQuery(string commandText, out SqliteDataReader? result, out string? errorMessage)
{
errorMessage = null;
var connection = new SqliteConnection($"DataSource={_databaseName}");
connection.Open();
var command = connection.CreateCommand();
command.CommandText = commandText;
try
{
result = command.ExecuteReader();
}
catch (Exception ex)
{
errorMessage = ex.Message;
result = null;
}
return connection;
}
}
}