从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
 }

感谢

从SQL Server数据库c#创建一个点数组

如果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