Я использую ODBC-соединение для извлечения данных из файла Access (.mdb) в среде Unity3D (Mono.net) в Windows 7, и соединение, разбор и запросы происходят без каких-либо ошибок.
Но когда я читаю полученные данные, я получаю только цифры из базы данных. Это могут быть целые числа или числа Float. Но когда я пытаюсь извлечь строку, она всегда возвращает пустую строку.
Вот что я использую в своем классе DataBaseHandler для выполнения запросов (выписок):
public ArrayList Execute(string req)
{
ArrayList output = new ArrayList();
[...]
cmd = new OdbcCommand(req);
cmd.Connection = accessConnection;
OdbcDataReader reader = cmd.ExecuteReader();
while (reader.Read()) {
String[] row = new String[reader.FieldCount];
for (int i=0; i<reader.FieldCount; i++) {
if (!reader.IsDBNull(i)) { // Added if for Visual Studio
// Getting empties strings, but work fine with numbers
row[i] = reader.GetValue(i).ToString();
// I was using GetString before, but didn't work with Visual Studio
}
}
output.Add( row );
}
[...]
return output;
}
И это то, что я выполняю для проверки запроса:
ArrayList data = db.Execute("SELECT * FROM Materials");
foreach (String[] row in data) {
string line = "";
foreach (String s in row) {
line += s + " - ";
}
Debug.Log(line); // Logging in Unity3D console
}
И я получаю:
1234 - 23.1 - - -
5678 - 12.9 - - -
Вместо:
1234 - 23.1 - A string - Another string -
5678 - 12.9 - Hello - World -
Почему я получаю только числа и строки, и как я могу их исправить?
EDIT: он отлично работает с Visual Studio 12 и Windows 7, и изменения, которые я должен был сделать для работы с Visual Studio, не показали улучшения в моей программе Unity.