-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDatabase.cs
136 lines (105 loc) · 4.44 KB
/
Database.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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.OleDb;
namespace stationMeteo
{
public class Database
{
OleDbConnection connection;
OleDbTransaction transaction;
public Database()
{
connect();
}
public void connect()
{
connection = new OleDbConnection();
connection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" + @"Data Source=C:\\Users\\hcodi\\Desktop\\COURS\\Q4\\C#\\DB_UserAccess.accdb";
}
public String getPermission()
{
connection.Open();
//transaction = connection.BeginTransaction();
String request = "SELECT * FROM permission";
OleDbCommand command = new OleDbCommand(request, connection);
OleDbDataReader reader = command.ExecuteReader();
while (reader.Read())
{
}
reader.Close();
connection.Close();
return "";
}
public User loginUser(String username, String password)
{
connection.Open();
Dictionary<String, Object> row = new Dictionary<String, Object>();
String query = @"SELECT * FROM [user] INNER JOIN [permission] ON user.permissionID = permission.permissionID WHERE [username] = ? AND [password] = ? ";
OleDbCommand command = new OleDbCommand(query, connection);
command.Parameters.AddWithValue("@p1", username);
command.Parameters.AddWithValue("@p2", password);
OleDbDataReader reader = command.ExecuteReader();
if (!reader.HasRows)
{
connection.Close();
return null;
}
reader.Read();
row.Add("ID", reader["userID"]);
row.Add("username", reader["username"]);
row.Add("password", reader["password"]);
row.Add("permission", new Dictionary<String, Object> {
{"permissionID", reader["permission.permissionID"].ToString()},
{"name", reader["name"].ToString()},
{"allowCreateID", reader["allowCreateID"] },
{"allowDestroyID", reader["allowDestroyID"] },
{"allowConfigAlarm", reader["allowConfigAlarm"] },
{"allowUserCreation", reader["allowUserCreation"] },
});
connection.Close();
return new User(row);
}
public List<User> getUsers()
{
connection.Open();
List<User> users = new List<User>();
Dictionary<String, Object> row = new Dictionary<String, Object>();
String query = "SELECT * FROM [user] INNER JOIN [permission] ON user.permissionID = permission.permissionID";
OleDbCommand command = new OleDbCommand(query, connection);
OleDbDataReader reader = command.ExecuteReader();
while (reader.Read())
{
row.Add("ID", reader["userID"]);
row.Add("username", reader["username"]);
row.Add("password", reader["password"]);
row.Add("permission", new Dictionary<String, Object> {
{"permissionID", reader["permission.permissionID"].ToString()},
{"name", reader["name"].ToString()},
{"allowCreateID", reader["allowCreateID"] },
{"allowDestroyID", reader["allowDestroyID"] },
{"allowConfigAlarm", reader["allowConfigAlarm"] },
{"allowUserCreation", reader["allowUserCreation"] },
});
users.Add(new User(row));
row.Clear();
}
connection.Close();
return users;
}
public User createUser(String username, String password, int role)
{
connection.Open();
String query = @"INSERT INTO [user]([username], [password], [permissionID]) VALUES(?,?,?)";
OleDbCommand command = new OleDbCommand(query, connection);
command.Parameters.AddWithValue("@p1", username);
command.Parameters.AddWithValue("@p2", password);
command.Parameters.AddWithValue("@p3", role);
command.ExecuteNonQuery();
connection.Close();
return null;
}
}
}