-
Notifications
You must be signed in to change notification settings - Fork 1
/
PMLSQLiteResult.cs
147 lines (134 loc) · 4 KB
/
PMLSQLiteResult.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
137
138
139
140
141
142
143
144
145
146
147
using System.Collections;
using System.Data.SQLite;
using Aveva.Core.PMLNet;
namespace PMLSQLite
{
/// <summary>
/// Provides methods for reading the result sets of the statement executed.
/// </summary>
[PMLNetCallable()]
public class PMLSQLiteResult
{
private SQLiteDataReader dr;
[PMLNetCallable()]
public PMLSQLiteResult()
{
}
public PMLSQLiteResult(SQLiteDataReader r)
{
dr = r;
}
[PMLNetCallable()]
public void Assign(PMLSQLiteResult that)
{
if (dr != null) dr.Dispose();
dr = that.dr;
}
/// <summary>
/// Closes the result.
/// </summary>
[PMLNetCallable()]
public void Close()
{
dr.Close();
}
/// <summary>
/// Returns if the result sets is closed.
/// </summary>
/// <returns>true if the result is closed, false otherwise</returns>
[PMLNetCallable()]
public bool IsClosed()
{
return dr.IsClosed;
}
/// <summary>
/// Moves to the next result set in multiple result sets.
/// </summary>
/// <returns>true if the method was successful, false otherwise</returns>
[PMLNetCallable()]
public bool NextResult()
{
return dr.NextResult();
}
/// <summary>
/// Returns if the result set has any rows.
/// </summary>
/// <returns>true if the result has any rows, false otherwise</returns>
[PMLNetCallable()]
public bool HasRows()
{
return dr.HasRows;
}
/// <summary>
/// Returns the column names in the result set.
/// </summary>
/// <returns>The column names</returns>
[PMLNetCallable()]
public Hashtable ColumnNames()
{
var names = new Hashtable();
for (int i = 0; i < dr.FieldCount; i++)
{
double key = i + 1;
names.Add(key, dr.GetName(i));
}
return names;
}
/// <summary>
/// Returns the type names of the columns in the result set.
/// </summary>
/// <returns>The type names</returns>
[PMLNetCallable()]
public Hashtable ColumnTypes()
{
var types = new Hashtable();
for (int i = 0; i < dr.FieldCount; i++)
{
double key = i + 1;
types.Add(key, dr.GetDataTypeName(i));
}
return types;
}
/// <summary>
/// Reads the next row from the result set.
/// </summary>
/// <returns>true if the method was successful, false otherwise</returns>
[PMLNetCallable()]
public bool Read()
{
return dr.Read();
}
/// <summary>
/// Fetches the value in the specified column name.
/// </summary>
/// <param name="name">Column name</param>
/// <returns>The value in the column</returns>
[PMLNetCallable()]
public string Fetch(string name)
{
return dr[name].ToString();
}
/// <summary>
/// Fetches the values in the current row.
/// </summary>
/// <returns>The values in the current row</returns>
[PMLNetCallable()]
public Hashtable FetchRow()
{
var row = new Hashtable();
for (int i = 0; i < dr.FieldCount; i++)
{
double key = i + 1;
if (dr[i] is double)
{
row.Add(key, (double)dr[i]);
}
else
{
row.Add(key, dr[i].ToString());
}
}
return row;
}
}
}