我对c#很新,并且已将对象的位置存储在SQL Server数据库中。我编写了一个查询来从数据库中选择对象位置,现在想用这些来填充数组。
我遇到了'你无法将一个对象转换为一个点'等错误,我无法弄清楚如何使用点数据类型填充一个数组。
有人可以帮我吗?
当前代码:
try
{
consecond.Open(); //Opens the connection
SqlDataReader dr = com_getposition.ExecuteReader();
int i = 0;
object[] arrayreturn = new object[10];
while (dr.Read())
{
arrayreturn[i] = dr["POSITION"];
i++;
}
p1.Location = (Point)arrayreturn[0];
dr.Close();
}
finally
{
consecond.Close(); //Closes the connection
}
由于
答案 0 :(得分:1)
如果POSITION
的类型为nvarchar
,则需要将其解析为正确的类型。
var str = (string)dr["POSITION"];
var i = str.IndexOf(',', 3);
var x = int.Parse(str.Substring(3, i - 3));
var y = int.Parse(str.Substring(i + 3, str.Length - (i + 4)));
p1.Location = new Point(x, y);
答案 1 :(得分:0)
Magnus是正确的,但我个人更喜欢这样的事情:
Int32 n;
bool b = Int32.TryParse(arrayreturn[0].ToString(), out n);
if (b)
p1.Location = n;
如果location
是一个Point,那么你可以修改它:
Int32 x;
Int32 y;
bool b = Int32.TryParse(arrayreturn[0].ToString(), out x);
if (b) {
b = Int32.TryParse(arrayreturn[1].ToString(), out y);
if (b) {
p1.Location = new Point(x, y);
return;
}
}
// put error-handling code here