-
Notifications
You must be signed in to change notification settings - Fork 0
/
mariadb.m
71 lines (64 loc) · 2.38 KB
/
mariadb.m
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
classdef mariadb
properties
hostname
port
username
password
database
command
is_octave
output
end
methods
function self = mariadb(varargin)
p = inputParser();
p.CaseSensitive = true;
p.FunctionName = 'mariadb';
% addParamValue is not recommended to use in matlab... however
% addParameter is not implemented in octave yet, so we've to
% use it
p.addParamValue ('port', 3306, @isnumeric);
p.addParamValue ('hostname' , 'localhost', @ischar);
p.addParamValue ('database', '', @ischar);
p.addParamValue ('password', 'password', @ischar);
p.addParamValue ('username', 'root', @ischar);
p.parse (varargin{:});
% init class variables
self.port = p.Results.port;
self.hostname = p.Results.hostname;
self.database = p.Results.database;
self.password = p.Results.password;
self.username = p.Results.username;
self.is_octave = true;
self.output = 'cell';
if (exist('OCTAVE_VERSION', 'builtin') ~= 5)
self.is_octave = false;
end
end
function retval = query(self, command)
retval = mariadb_(self.hostname, self.port, self.username, self.password, command, self.database);
s = size(retval);
if numel(retval) > 0
switch self.output
case 'cell'
if (s(1) == 1)
retval = cell();
end
return
case 'mat'
retval = self.to_mat(retval, s);
return
otherwise
return
end % switch
end % if numel
end % query
function retval = to_mat(self, c, s)
if (s(1) == 1)
retval = [];
else
retval = cellfun(@(x) str2double(x), c);
end % if s
end % to_mat
end % methods
end