نمایش نتایج 1 تا 4 از 4

نام تاپیک: مشکل insert داخل دیتابیس با دیکشنری

  1. #1

    مشکل insert داخل دیتابیس با دیکشنری

    سلام دوستان
    من یه مشکل با ذخیره داده هام در دیتابیس با دستور insert دارم
    من یک دیکشنری دارم که کلید و مقدارش رو از نوع استرینگ مشخص کردم حالا زمانی که می خوام مقادیر داخل دیکشنری رو با استفاده از foreach پیمایش کنم و بریزم داخل دیتابیس دچار مشکل میشم
    نکته چون key ها نامشون با فیلد های دیتابیس یکی نیست قبلش چکش باید بکنم تا اطلاعات درست وارد بشه اما مشکل دارم بخشی از کد رو می زارم تا کمکم کنید

    foreach(var dic in dictionary){
    SqlCommand com=new SqlCommand("INSERT INTO MainBalancesheet(ids,MBcode,MBdate,MB_TotalAssets, MB_TotalHolder)
    VALUES(@ids,@MBcode,@MBdate,@MB_TotalAssets,@MB_To talHolder)", con);
    if(dic.Key=="txbTss"){ com.Parameters.Add(new SqlParameter("@ids", 10));}
    if(dic.Key=="txbsets"){ com.Parameters.Add(new SqlParameter("@MBcode", 12));}
    if(dic.Key=="txbTotalAssets"){ com.Parameters.Add(new SqlParameter("@MBdate", 2013/07/27));}
    if(dic.Key=="txbTotalAssets"){ com.Parameters.Add(new SqlParameter("@MB_TotalAssets", dic.Value));}
    if(dic.Key=="txbTotaHolders"){ com.Parameters.Add(new SqlParameter("@MB_TotalHolder", dic.Value));}
    com.ExecuteNonQuery();


    }


    چند تا ارور میداد که با تصحیحشون هم بازم مشکلات پشت سر هم ایجاد می شد
    برای مثال
    https://barnamenevis.org/showthread.php?87475-Must-declare-the-scalar-variable-code


    https://barnamenevis.org/showthread.php?398445-%D8%B0%D8%AE%DB%8C%D8%B1%D9%87-%D8%B9%DA%A9%D8%B3-%D8%A8%D8%A7-%DA%A9%D8%AF-insert&highlight=new+SqlParameter

  2. #2

    نقل قول: مشکل insert داخل دیتابیس با دیکشنری

    این لینک هم پیدا کردم اما چاره ساز نشد
    https://barnamenevis.org/showthread.php?190609-%D8%B7%D8%B1%D8%B2-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-stored-procdure-%D8%AF%D8%B1-%D8%B3%DB%8C-%D8%B4%D8%A7%D8%B1%D9%BE


    خواستم از switch استفاده کنم که مشکلش اینه که توش نمیشه از دستور command کار کرد چون با ابجکت مشکل داره

  3. #3

    نقل قول: مشکل insert داخل دیتابیس با دیکشنری

    دوستان من هر کار کردم بازم مشکلم پا برجاست کد ها رو میزارم هر کاری می کنم ارور میگیره

    دیکشنری اصلی که دارم و دیتا توش هست
    var dictionary = new Dictionary<string, string>();

    این بخش اصلی کد
     SqlDataAdapter adapter = new SqlDataAdapter();
    SqlCommand command = new SqlCommand("ejra");
    command.Connection = new SqlConnection("Data Source=.\\SQLEXPRESS;Initial Catalog=bourse;Integrated Security=True");
    command.Connection.Open();
    command.CommandType = CommandType.StoredProcedure; adapter.SelectCommand = command;
    List<int> ls = new List<int>();
    string[] boxval = new string[17];
    boxval[0]="10";
    boxval[1] = "123";
    boxval[2] = "";
    boxval[11] = "";
    boxval[16] = "";
    boxval[6] = "";
    foreach (var dic in dictionary)
    {
    if (dic.Key == "txbTotalAssets") { boxval[3] = dic.Value; }
    else if (dic.Key == "txbTotalStockHoldersEquity") { boxval[4] = dic.Value; }
    else if (dic.Key == "txbInventories") { boxval[5] = dic.Value; }
    else if (dic.Key == "txbTradeNotesAndAccountsReceivable") { boxval[7] = dic.Value; }
    else if (dic.Key == "txbOtherNotesAndAccountsReceivable") { boxval[8] = dic.Value; }
    else if (dic.Key == "txbTotalCurrentAssets") { boxval[9] = dic.Value; }
    else if (dic.Key == "txbTotalLiabilities") { boxval[10] = dic.Value; }
    else if (dic.Key == "txbLoanPayable") { boxval[12] = dic.Value; }
    else if (dic.Key == "txbLongTermNotesAndAccountsPayable") { boxval[13] = dic.Value; }
    else if (dic.Key == "txbTotalCurrentLiabilities") { boxval[14] = dic.Value; }
    else if (dic.Key == "txbCashAndCashEquivalents") { boxval[15] = dic.Value; }
    else { };
    }int i;
    for (i = 0; i < boxval.Length; i++) {

    // command.Parameters.Add("@MB_TotalAssets", SqlDbType.NVarChar).Value = dic.Value; ;

    command.Parameters.Add(new SqlParameter("@ids", boxval[0]));
    MessageBox.Show(""+ boxval[0].GetType());
    command.Parameters.Add(new SqlParameter("@MBcode", boxval[1]));
    command.Parameters.Add(new SqlParameter("@MBdate", boxval[2]));
    command.Parameters.Add(new SqlParameter("@MB_TotalAssets", boxval[3]));
    command.Parameters.Add(new SqlParameter("@MB_TotalStockHolder", boxval[4]));
    command.Parameters.Add(new SqlParameter("@MB_Inventories", boxval[5]));
    // command.Parameters.Add(new SqlParameter("@MB_AccountsReceivable", boxval[6]));
    command.Parameters.Add(new SqlParameter("@MB_TradeNotes", boxval[7]));
    command.Parameters.Add(new SqlParameter("@MB_OtherNotes", boxval[8]));
    command.Parameters.Add(new SqlParameter("@MB_CurrentAssets", boxval[9]));
    command.Parameters.Add(new SqlParameter("@MB_TotalLiabilities", boxval[10]));
    // command.Parameters.Add(new SqlParameter("@MB_Longtermdebt", boxval[11]));
    command.Parameters.Add(new SqlParameter("@MB_LoanPayable", boxval[12]));
    command.Parameters.Add(new SqlParameter("@MB_AccountsPayable", boxval[13]));
    command.Parameters.Add(new SqlParameter("@MB_CurrentLiabilities", boxval[14]));
    command.Parameters.Add(new SqlParameter("@MB_CashEquivalents", boxval[15]));
    // command.Parameters.Add(new SqlParameter("@MB_NetWorkingCapital", boxval[16]));



    command.ExecuteNonQuery();
    }


    این تاپیک ها مربوط به مشکل من میشه
    http://stackoverflow.com/questions/7123974/getting-an-error-converting-data-type-nvarchar-to-int-from-application-c-but

    http://www.codeproject.com/Questions/241806/Cannot-Convert-Datatype-nvarchar-into-int-error

    http://stackoverflow.com/questions/3878796/c-sharp-error-error-converting-nvarchar-datatype-to-int-help


    مقادیر هم دیتابیس هم پروسیجر رو هم تغییر دادم اما بازم نشد
    این کد پروسیجر
    ALTER PROCEDURE [dbo].[ejra] 
    -- Add the parameters for the stored procedure here

    @ids varchar,
    @MBcode varchar,
    @MBdate varchar,
    @MB_TotalAssets varchar,
    @MB_TotalStockHolder varchar,
    @MB_Inventories varchar,
    @MB_AccountsReceivable varchar,
    @MB_TradeNotes varchar,
    @MB_OtherNotes varchar,
    @MB_CurrentAssets varchar,
    @MB_TotalLiabilities varchar,
    @MB_Longtermdebt varchar,
    @MB_LoanPayable varchar,
    @MB_AccountsPayable varchar,
    @MB_CurrentLiabilities varchar,
    @MB_CashEquivalents varchar,
    @MB_NetWorkingCapital varchar
    AS
    BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    INSERT INTO MainBalancesheet(ids,MBcode,MBdate,MB_TotalAssets, MB_TotalStockHolder,MB_Inventories,MB_AccountsRece ivable,MB_TradeNotes,MB_OtherNotes,MB_CurrentAsset s,MB_TotalLiabilities,MB_Longtermdebt,MB_LoanPayab le,MB_AccountsPayable,MB_CurrentLiabilities,MB_Cas hEquivalents,MB_NetWorkingCapital) VALUES(@ids,@MBcode,@MBdate,@MB_TotalAssets,@MB_To talStockHolder,@MB_Inventories,@MB_AccountsReceiva ble,@MB_TradeNotes,@MB_OtherNotes,@MB_CurrentAsset s,@MB_TotalLiabilities,@MB_Longtermdebt,@MB_LoanPa yable,@MB_AccountsPayable,@MB_CurrentLiabilities,@ MB_CashEquivalents,@MB_NetWorkingCapital)
    END


    این کد ها رو هم میزارم که اینا رو هم تست کردم اما بازم نشد
    command.Parameters.Add(new SqlParameter("@MB_NetWorkingCapital", boxval[16]));
    command.Parameters.AddWithValue("@MB_CurrentLiabil ities", Convert.ToInt32(boxval[14]));
    command.Parameters.AddWithValue("@ids", SqlDbType.SmallInt).Value=boxval[0];
    if (dic.Key == "txbTotalAssets") { boxval[3] =Convert.ToInt32( dic.Value); }
    command.Parameters.Add(new SqlParameter("@MB_CashEquivalents", boxval[15]));


    هر خط بالا رو کلی ساختم فقط بحث نمونه بود

    هر کاری کردم به هر حال نشد ممنون میشم کمکم کنید

  4. #4

    نقل قول: مشکل insert داخل دیتابیس با دیکشنری

    متن دقیق خطا رو چرا نذاشتید.

    فکر کنم اشکال از SP هست. همه پارامترهای ورودی SP رو از نوع varchar گرفتی در حالی که احتمالا همه ستونهای جدول از این نوع نیستند. نوع پارامترها رو متناسب نوع ستونها انتخاب کن.

تاپیک های مشابه

  1. سوال: مشکل در insert در دیتابیس
    نوشته شده توسط esteftaats1368 در بخش PHP
    پاسخ: 1
    آخرین پست: سه شنبه 17 اردیبهشت 1392, 09:15 صبح
  2. مشکل در insert تو دیتابیس
    نوشته شده توسط resatak در بخش C#‎‎
    پاسخ: 2
    آخرین پست: دوشنبه 08 آبان 1391, 10:50 صبح
  3. سوال: مشکل در insert به دیتابیس دارم
    نوشته شده توسط abbas3zaar در بخش PHP
    پاسخ: 2
    آخرین پست: جمعه 31 شهریور 1391, 18:37 عصر
  4. سوال: مشکل insert کردن یک سطر در دیتابیس
    نوشته شده توسط moontoise در بخش PHP
    پاسخ: 1
    آخرین پست: جمعه 10 اردیبهشت 1389, 20:51 عصر
  5. مشکل در دستور insert به دیتابیس
    نوشته شده توسط fufuli در بخش دسترسی به داده ها (ADO.Net و LINQ و ...)
    پاسخ: 7
    آخرین پست: جمعه 16 اسفند 1387, 23:11 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •