2012-02-21 3 views
0

Я довольно новичок в C# и сохранил позиции объекта в базе данных SQL Server. Я написал запрос для выбора местоположения объекта из базы данных и теперь хочу заполнить массив этими данными.Создание массива точек из базы данных SQL Server C#

У меня возникли проблемы с ошибкой «вы не можете преобразовать объект в точку», и я не могу понять, как заполнить массив типом данных точки.

Может ли кто-нибудь помочь мне с этим?

Текущий код:

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 
} 

Благодаря

+1

Покажите нам код. – jason

+0

укажите код, который вы написали до сих пор – northpole

+1

Какой тип 'POSITION' в sql-запросе? – Magnus

ответ

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); 
+0

Данные хранятся так же, как в БД (в виде визуальных студийных шоу): {X = 390, Y = 197} " – Mike91

+0

Большое спасибо magnus, этот код хорошо работал – Mike91

+0

Нет проблем, я вижу, это ваш первый вопрос. Не забудьте принять ответ. – Magnus

0

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 
+0

Спасибо за ваши отзывы egrunin, высоко ценим! – Mike91

Смежные вопросы