aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Data/MySQL/MySQLRaw.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Data/MySQL/MySQLRaw.cs')
-rw-r--r--OpenSim/Data/MySQL/MySQLRaw.cs197
1 files changed, 197 insertions, 0 deletions
diff --git a/OpenSim/Data/MySQL/MySQLRaw.cs b/OpenSim/Data/MySQL/MySQLRaw.cs
new file mode 100644
index 0000000..bb8c96c
--- /dev/null
+++ b/OpenSim/Data/MySQL/MySQLRaw.cs
@@ -0,0 +1,197 @@
1// https://dev.mysql.com/doc/connector-net/en/
2
3
4using System;
5using System.Collections;
6using System.Collections.Generic;
7using System.Data;
8using System.Reflection;
9using System.Text;
10using log4net;
11using MySql.Data.MySqlClient;
12
13namespace OpenSim.Data.MySQL
14{
15 public class MySQLRaw
16 {
17 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
18 private string m_connectString;
19
20 public MySQLRaw(string connect)
21 {
22 m_connectString = connect;
23 }
24
25 public int Count(string table)
26 {
27 return Count(table, "");
28 }
29 public int Count(string table, string wher)
30 {
31 string query = "SELECT Count(*) FROM " + table;
32 if ("" != wher)
33 query = query + " WHERE " + wher;
34 int result = -1;
35
36 object r = doScalarQuery(query);
37 if (r != null)
38 result = Convert.ToInt32(r);
39
40 return result;
41 }
42
43 public List< Hashtable > Join(string table, string select, string join, string wher, string order)
44 {
45 if ("" == select)
46 select = "*";
47 string query = "SELECT " + select + " FROM " + table;
48 if ("" != join)
49 query = query + " " + join;
50 if ("" != wher)
51 query = query + " WHERE " + wher;
52 if ("" != order)
53 query = query + " ORDER BY " + order;
54
55 using (MySqlConnection dbcon = new MySqlConnection(m_connectString))
56 {
57 dbcon.Open();
58 MySqlCommand cmd = new MySqlCommand(query, dbcon);
59 MySqlDataReader rdr = cmd.ExecuteReader();
60 List<string> names = new List<string>();
61 DataTable schema = rdr.GetSchemaTable();
62 List< Hashtable > list = new List< Hashtable >();
63
64 foreach (DataRow row in schema.Rows)
65 {
66 string tbl = "";
67 string nm = "";
68 string tp = "";
69 foreach (DataColumn col in schema.Columns)
70 {
71 if ("BaseTableName" == col.ColumnName) tbl = row[col].ToString();
72 if ("ColumnName" == col.ColumnName) nm = row[col].ToString();
73 if ("DataType" == col.ColumnName) tp = row[col].ToString();
74 }
75 names.Add(nm);
76 }
77
78 while (rdr.Read())
79 {
80 Hashtable r = new Hashtable();
81 foreach (string name in names)
82 {
83 r[name] = rdr[name];
84 }
85 list.Add(r);
86 }
87
88 rdr.Close();
89 dbcon.Close();
90 return list;
91 }
92 }
93
94 public List< Hashtable > Select(string table, string select, string wher, string order)
95 {
96 if ("" == select)
97 select = "*";
98 string query = "SELECT " + select + " FROM " + table;
99 if ("" != wher)
100 query = query + " WHERE " + wher;
101 if ("" != order)
102 query = query + " ORDER BY " + order;
103
104 using (MySqlConnection dbcon = new MySqlConnection(m_connectString))
105 {
106 dbcon.Open();
107 MySqlCommand cmd = new MySqlCommand(query, dbcon);
108 MySqlDataReader rdr = cmd.ExecuteReader();
109 List<string> names = new List<string>();
110 DataTable schema = rdr.GetSchemaTable();
111 List< Hashtable > list = new List< Hashtable >();
112
113 foreach (DataRow row in schema.Rows)
114 {
115 string tbl = "";
116 string nm = "";
117 string tp = "";
118 foreach (DataColumn col in schema.Columns)
119 {
120 if ("BaseTableName" == col.ColumnName) tbl = row[col].ToString();
121 if ("ColumnName" == col.ColumnName) nm = row[col].ToString();
122 if ("DataType" == col.ColumnName) tp = row[col].ToString();
123 }
124 names.Add(nm);
125 }
126
127 while (rdr.Read())
128 {
129 Hashtable r = new Hashtable();
130 foreach (string name in names)
131 {
132 r[name] = rdr[name];
133 }
134 list.Add(r);
135 }
136
137 rdr.Close();
138 dbcon.Close();
139 return list;
140 }
141 }
142
143 private object doScalarQuery(string query)
144 {
145 try
146 {
147 using (MySqlConnection dbcon = new MySqlConnection(m_connectString))
148 {
149 dbcon.Open();
150 MySqlCommand cmd = new MySqlCommand(query, dbcon);
151 Object ret = cmd.ExecuteScalar();
152 dbcon.Close();
153 return ret;
154 }
155 }
156 catch (MySqlException e)
157 {
158 m_log.ErrorFormat("[MYSQL RAW]: Problem connecting to the database {0}", e.Message);
159 return null;
160 }
161 }
162
163 private void doNonQuery(string query)
164 {
165 using (MySqlConnection dbcon = new MySqlConnection(m_connectString))
166 {
167 dbcon.Open();
168 MySqlCommand cmd = new MySqlCommand(query, dbcon);
169 cmd.ExecuteNonQuery();
170 dbcon.Close();
171 }
172 }
173
174 public void Insert(string table)
175 {
176 string query = "INSERT INTO " + table + " (name, age) VALUES('John Smith', '33')";
177 doNonQuery(query);
178 }
179
180 public void Update(string table, string wher)
181 {
182 string query = "UPDATE " + table + " SET name='Joe', age='22'";
183 if ("" != wher)
184 query = query + " WHERE " + wher;
185 doNonQuery(query);
186 }
187
188 public void Delete(string table, string wher)
189 {
190 string query = "DELETE FROM " + table;
191 if ("" != wher)
192 query = query + " WHERE " + wher;
193 doNonQuery(query);
194 }
195
196 }
197}