从SQL Server数据库c#创建一个点数组
本文关键字:一个 数组 Server SQL 数据库 创建 | 更新日期: 2023-09-27 18:25:16
我对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
}
感谢
如果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);
Magnus是正确的,但我个人更喜欢这样的东西:
Int32 n;
bool b = Int32.TryParse(arrayreturn[0].ToString(), out n);
if (b)
p1.Location = n;
如果location
是一个点,那么您可以修改它:
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