我正在使用ODBC连接在Windows 7上的Unity3D环境(Mono.net)中从一个Access文件(.mdb)获取数据,连接、断开和请求都没有错误。
但是,当我读取数据时,我只收到来自数据库的数字。它可以是整数或浮点数。但是当我尝试获取字符串时,它总是返回一个空字符串。
下面是我在我的DataBaseHandler类中用于执行请求(提取)的代码:
以下是我用于测试请求的内容:
我收到了:
但是,当我读取数据时,我只收到来自数据库的数字。它可以是整数或浮点数。但是当我尝试获取字符串时,它总是返回一个空字符串。
下面是我在我的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 -
为什么我只得到数字而没有字符串,如何进行修正?
编辑:在Visual Studio 12和Windows 7上工作正常,为了使其在Visual Studio中工作,我所做的修改并没有在Unity程序中显示出任何改进。
ArrayList
而是使用List<T>
,其次使用调试点和逐步调试,你的第二段代码片段应该可以正常工作,问题在于你正在填充你的ArrayList
(第一段代码片段)。 - HabibDebug.Log
在 foreach 中返回类似于“302912 - - - 32.1 - - 64 - 50”的内容。它跳过字符串。 使用List<T>
也会得到相同的结果,但我将使用断点来查看发生了什么。 - Dean