نوشته شده توسط
shaghayegh.s
به آرايه هم فکر کردم اما مشکل اين است که فکر مي کنم بايد مقدار هر يک از خانه هاي آرايه رادر يک پارامتر کپي کنم و از پارامتر ها در دستورinsert استفاده کنم آيا اين روش درست است؟
سلام
بله درسته
ولی می ونید با کد های پایین یک آریه دو بعدی n x n رو به یک رشته تبدیل و در دیتابیس ذخیره و دو باره از دیتابیس خونده و به همون آرایه تبدیل کنید
با این کار دیگه نگران ابعاد آرایه نیستید و نیاز به چندین فیلد و پارامتر (تو مثال شما 81 فیلد و پارامتر!!!) ندارید
توابع به همراه مثال:
private void YourSub()
{
string[,] SodokoAry = new string[8,8];
//پرکردن آرایه جهت آزمایش توابع
Random rnd= new Random();
for (int i = 0; i <= SodokoAry.GetUpperBound(0); i++)
for (int j = 0; j <= SodokoAry.GetUpperBound(1); j++)
SodokoAry[i, j] = rnd.Next(1, 9).ToString();
//پرکردن آرایه جهت آزمایش توابع
//تبدیل آرایه به رشته
string AryToStr = ArrayTOString(SodokoAry);
//اینجا رشته در یتابیس ذخیره می شود
//-----------------------------------------
//اینجا رشته از دیتابیس خوانده می شود
// تبدیل رشته به آرایه
string[,] StrToAry = StringToArray(AryToStr);
}
private string ArrayTOString(string[,] ary, char Bound1Seperator = '|', char Bound2Seperator = ',')
{
string Result = "";
for (int i = 0; i <= ary.GetUpperBound(0); i++)
{
string SubStr="";
for (int j = 0; j <= ary.GetUpperBound(1); j++)
SubStr += ary[i, j] + Bound2Seperator;
Result += SubStr.TrimEnd(Bound2Seperator) + Bound1Seperator;
}
return Result.TrimEnd(Bound1Seperator);
}
private string[,] StringToArray(string str, char BoundSeperator = '|', char Bound2Seperator = ',')
{
string[] Bound1Values = str.Split(BoundSeperator);
int Bound1Size = Bound1Values.GetUpperBound(0)+1;
int Bound2Size = Bound1Values[0].Split(Bound2Seperator).GetUpperBound(0)+1;
string[,] Result = new string[Bound1Size, Bound2Size];
for(int i=0 ;i<Bound1Size;i++)
{
string[] Bound2Values =Bound1Values[i].Split(Bound2Seperator);
for (int j=0;j<Bound2Size;j++)
Result[i,j]=Bound2Values[j];
}
return Result;
}