ذخیره اطلاعات آرایه در Sql Server توسط حلقه for در سی شارپ
با سلام همانطوری که در کدهای پایین مشاهده میکنید تصمیم دارم آرایه خودم رو در یک dataTable اینسرت کنم -ممنون میشم راهنماییم کنین.
آرایه
SmsWebService.ReceivedMessage[] RecieveSms = ws.GetReceivedMessages(username, pass, fromdate, Todate, ref message);
//////////////////////////////////////////////////////
DataTable dt = new DataTable();
dt.Columns.Add("MobileNo");
dt.Columns.Add("LineNumber");
.
.
.
DataRow dr = dt.NewRow();
dt.Rows.Add(RecieveSms);
///////////////////////////////////////////////////
با روش پایین مقدار دهی میکنم تمام رکوردها رو در دیتا تیبل Insert نمیکند.
for (int r = 0; r < RecieveSms.Length; r++)
{
dt.Rows[dt.Rows.Count - 1]["MobileNo"] = RecieveSms[0].MobileNo;
dt.Rows[dt.Rows.Count - 1]["ReceiveDateTime"] = RecieveSms[0].ReceiveDateTime;
dt.Rows[dt.Rows.Count - 1]["SMSMessageBody"] = RecieveSms[0].SMSMessageBody;
}
نکته قابل توجه این که برای اینکه بتوانم از این آرایه در حلقه foreach استفاده کنم مجبور شدم در دیتاتیبل اینسرت کنم اگر راهی دیگر هست راهنمایی بفرمایید.با تشکر
پاسخ هوش مصنوعی
برای ذخیره سازی اطلاعات آرایه در DataTable با استفاده از یک حلقه for، شما باید برای هر رکورد جدید یک ردیف جدید در DataTable ایجاد کنید. می توانید کد خود را به شکل زیر تغییر دهید:
SmsWebService.ReceivedMessage[] RecieveSms = ws.GetReceivedMessages(username, pass, fromdate, Todate, ref message);
DataTable dt = new DataTable();
dt.Columns.Add("MobileNo");
dt.Columns.Add("LineNumber");
dt.Columns.Add("ReceiveDateTime");
dt.Columns.Add("SMSMessageBody");
for (int r = 0; r < RecieveSms.Length; r++)
{
DataRow dr = dt.NewRow();
dr["MobileNo"] = RecieveSms[r].MobileNo;
dr["ReceiveDateTime"] = RecieveSms[r].ReceiveDateTime;
dr["SMSMessageBody"] = RecieveSms[r].SMSMessageBody;
dt.Rows.Add(dr);
}
در این کد، برای هر آیتم در آرایه RecieveSms یک ردیف جدید در DataTable ایجاد شده و مقادیر مناسب به آن نسبت داده شده است. در نهایت، ردیف به DataTable اضافه می شود.
این کار به شما این امکان را می دهد تا تمام رکوردها را به درستی در DataTable وارد کنید.
در حلقه for برای اینکه اطلاعات با هر بار چرخش حلقه جلو بره باید از اندیس حلقه استفاده کنید. در کدی که شما در حلقه نوشتید :
dt.Rows[dt.Rows.Count - 1]["MobileNo"] = RecieveSms[0].MobileNo;
متغیر RecieveSms در واقع همون آرایه شما هست و برای اینکه بتونید در بین سلولهای این آرایه حرکت کنید باید اندیس حلقه رو بهش بدید نه عدد ثابت 0
کد شما مشابه زیر باید باشه :
for (int r = 0; r < RecieveSms.Length; r++)
{
dt.Rows[dt.Rows.Count - 1]["MobileNo"] = RecieveSms[r].MobileNo;
dt.Rows[dt.Rows.Count - 1]["ReceiveDateTime"] = RecieveSms[r].ReceiveDateTime;
dt.Rows[dt.Rows.Count - 1]["SMSMessageBody"] = RecieveSms[r].SMSMessageBody;
}
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- مشکل تاریخ شمسی در سی شارپ
- نمایش گزارش stimulsoft روی کلاینت
- تفاوت های سی شارپ 8 با نسخه های قبلی چیه؟
- انتخاب چند سطر دلخواه توسط چک باکس در DataGrid و محاسبه جمع سطرهای انتخاب شده
- نمایش نوتیفکیشن در سی شارپ
- ارسال پارامتر از سی شارپ به استیمول سافت
- عدم نمایش عکس در دیتاگرید ویو در wpf
- Library Animation برای کنترلهای WPF
- مشکل در تغییر مقدار Text کنترل RibbonBar در کامپوننت DevExpress
- قرار دادن مقادیر ارسالی یک ستون از جدول به صورت سطری در استیمول