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

时间:2012-02-21 21:11:07

标签: c# sql-server point

我对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
 }

由于

2 个答案:

答案 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