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

نام تاپیک: نحوه بدست آوردن id رکود ذخیره شده

  1. #1

    Thumbs down نحوه بدست آوردن id رکود ذخیره شده

    با سلام
    با linq یک دستور insert نوشته شده است که اطلاعات را در دیتابیس ذخیره می شود با استفاده از خاصیت Identity Specification در sql به صورت اتوماتیک id رکود تولید می شود چگونه می توان id رکورد ذخیره شده بدست آورد و در یک فیلد ذخیره کرد

  2. #2

    نقل قول: نحوه بدست آوردن id رکود ذخیره شده

    باید با Output پارامتر کار کنی:

    CREATE PROCEDURE dbo.InsertCategory
    @CategoryName nvarchar(15),
    @Identity int OUT
    AS
    INSERT INTO Categories (CategoryName) VALUES(@CategoryName)
    SET @Identity = SCOPE_IDENTITY()



    private static void RetrieveIdentity(string connectionString)
    {
    using (SqlConnection connection =
    new SqlConnection(connectionString))
    {
    // Create a SqlDataAdapter based on a SELECT query.
    SqlDataAdapter adapter =
    new SqlDataAdapter(
    "SELECT CategoryID, CategoryName FROM dbo.Categories",
    connection);

    //Create the SqlCommand to execute the stored procedure.
    adapter.InsertCommand = new SqlCommand("dbo.InsertCategory",
    connection);
    adapter.InsertCommand.CommandType = CommandType.StoredProcedure;

    // Add the parameter for the CategoryName. Specifying the
    // ParameterDirection for an input parameter is not required.
    adapter.InsertCommand.Parameters.Add(
    new SqlParameter("@CategoryName", SqlDbType.NVarChar, 15,
    "CategoryName"));

    // Add the SqlParameter to retrieve the new identity value.
    // Specify the ParameterDirection as Output.
    SqlParameter parameter =
    adapter.InsertCommand.Parameters.Add(
    "@Identity", SqlDbType.Int, 0, "CategoryID");
    parameter.Direction = ParameterDirection.Output;

    // Create a DataTable and fill it.
    DataTable categories = new DataTable();
    adapter.Fill(categories);

    // Add a new row.
    DataRow newRow = categories.NewRow();
    newRow["CategoryName"] = "New Category";
    categories.Rows.Add(newRow);

    adapter.Update(categories);

    Console.WriteLine("List All Rows:");
    foreach (DataRow row in categories.Rows)
    {
    {
    Console.WriteLine("{0}: {1}", row[0], row[1]);
    }
    }
    }
    }


    http://msdn.microsoft.com/en-us/library/ks9f57t0.aspx

  3. #3

    نقل قول: نحوه بدست آوردن id رکود ذخیره شده

    نقل قول نوشته شده توسط tooraj_azizi_1035 مشاهده تاپیک
    باید با Output پارامتر کار کنی:

    CREATE PROCEDURE dbo.InsertCategory
    @CategoryName nvarchar(15),
    @Identity int OUT
    AS
    INSERT INTO Categories (CategoryName) VALUES(@CategoryName)
    SET @Identity = SCOPE_IDENTITY()



    private static void RetrieveIdentity(string connectionString)
    {
    using (SqlConnection connection =
    new SqlConnection(connectionString))
    {
    // Create a SqlDataAdapter based on a SELECT query.
    SqlDataAdapter adapter =
    new SqlDataAdapter(
    "SELECT CategoryID, CategoryName FROM dbo.Categories",
    connection);

    //Create the SqlCommand to execute the stored procedure.
    adapter.InsertCommand = new SqlCommand("dbo.InsertCategory",
    connection);
    adapter.InsertCommand.CommandType = CommandType.StoredProcedure;

    // Add the parameter for the CategoryName. Specifying the
    // ParameterDirection for an input parameter is not required.
    adapter.InsertCommand.Parameters.Add(
    new SqlParameter("@CategoryName", SqlDbType.NVarChar, 15,
    "CategoryName"));

    // Add the SqlParameter to retrieve the new identity value.
    // Specify the ParameterDirection as Output.
    SqlParameter parameter =
    adapter.InsertCommand.Parameters.Add(
    "@Identity", SqlDbType.Int, 0, "CategoryID");
    parameter.Direction = ParameterDirection.Output;

    // Create a DataTable and fill it.
    DataTable categories = new DataTable();
    adapter.Fill(categories);

    // Add a new row.
    DataRow newRow = categories.NewRow();
    newRow["CategoryName"] = "New Category";
    categories.Rows.Add(newRow);

    adapter.Update(categories);

    Console.WriteLine("List All Rows:");
    foreach (DataRow row in categories.Rows)
    {
    {
    Console.WriteLine("{0}: {1}", row[0], row[1]);
    }
    }
    }
    }


    http://msdn.microsoft.com/en-us/library/ks9f57t0.aspx
    کد بالا را چگونه می توان با linq پیاده سازی کرد

  4. #4
    مدیر بخش آواتار mmd2009
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    تهران
    پست
    2,393

    نقل قول: نحوه بدست آوردن id رکود ذخیره شده

    با سلام

    نیازی نیست کار زیادی انجام بدید کافیه از کد زیر استفاده بکنید و آخرین رکورد مورد نظرتون رو انتخاب بکنید :


    var lastRecord = MyContext.MyTable.Last();


    حتی میتونید Predicate مورد نظرتون رو هم اعمال کنید و یک طورایی Customize کنید انتخاب اخرین رکورد جدولتون رو.

    حالا که رکورد مورد نظر رو دارید میتونید به کلیه اطلاعاتش دست پیدا بکنید مثل :


    var id = lastRecord.Id;


    موفق باشید

    کسی که به خود اطمینان دارد به تعریف دیگران احتیاج ندارد. «گوستاو لوبون»


  5. #5

    نقل قول: نحوه بدست آوردن id رکود ذخیره شده

    کد به صورت نوشته شد

    DataClassesDataContext d = newDataClassesDataContext();
    Table1 tb = newTable1();
    var i = d.Table1s.Last();
    tb.age = i.id;
     
    tb.name = TextBox1.Text;
    d.Table1s.InsertOnSubmit(tb);
    d.SubmitChanges();

    در هنگام اجرا خطای زیر می دهد
    The query operator 'Last' is not supported.
    خطا از خط زیر می دهد

    var
    i = d.Table1s.Last();

    علت خطا چیست

  6. #6
    مدیر بخش آواتار mmd2009
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    تهران
    پست
    2,393

    نقل قول: نحوه بدست آوردن id رکود ذخیره شده

    خب اونطور که مشخصه شما دارید از Linq To Sql استفاده میکنید که این تکنولوژی که دیگه گسترش هم پیدا نمیکنه اگه اشتباه نکنم چند از Extension Method پشتیبانی نمیکنه که یکیشون همین Last هستش اونم به این دلیله که نمیتونید Convert کنه Last رو به یک SQL Statement . برای این کار شما یک راه ساده در پیش داره اونم اینه که خودتون یک متد برای بسازید اونم به شکل زیر :


    public static class QueryableHelper
    {
    public static T LastRecord<T, TU>(this IQueryable<T> source, Expression<Func<T, TU>> keySelector)
    {
    return source.OrderByDescending(keySelector).First();
    }
    }


    این کدی که براتون نوشتمو میتونید به هر شکلی که خواستید عوضش کنید ولی با این شرایطی که گفتید همین کارتونو راه میندازه. همونور هم که مشخصه ابتدا Descending میکنم keySelector مورد نظرمون رو و بعد از اینکه برعکس شدن رکورد اولی رو برمیگردونیم که رکورد اول همون رکورد اخر ماست.

    طریقه استفادشم به این شکله :


    var linqToSql = new LinqToSqlDataContext();
    linqToSql.Users.InsertOnSubmit(new User
    {
    Name = "mmd2009"
    });
    linqToSql.SubmitChanges();
    var lastRecord = linqToSql.Users.LastRecord(d => d.ID);


    موفق باشید

    کسی که به خود اطمینان دارد به تعریف دیگران احتیاج ندارد. «گوستاو لوبون»


  7. #7

    نقل قول: نحوه بدست آوردن id رکود ذخیره شده

    یک راه دیگه اینه که ، بلافاصله بعد از درج در دیتابیس میتونید مقدار id را بخونید. یعنی بعد از SubmitChanges :

    using (DataClasses1DataContext context = new DataClasses1DataContext())
    {
    Member m = new Member() { Name = "aaaaa" };
    context.Members.InsertOnSubmit(m);
    context.SubmitChanges();

    MessageBox.Show(m.ID.ToString()); // Read ID Here
    }

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

  1. پاسخ: 2
    آخرین پست: پنج شنبه 07 مهر 1390, 00:40 صبح
  2. پاسخ: 3
    آخرین پست: چهارشنبه 01 دی 1389, 23:18 عصر
  3. بدست آوردن پسورد های ذخیره شده در مرورگر ها ؟
    نوشته شده توسط Samsam2010 در بخش برنامه نویسی در 6 VB
    پاسخ: 1
    آخرین پست: سه شنبه 19 آبان 1388, 06:54 صبح
  4. نحوه بدست آوردن یک ستون از ردیف انخاب شده
    نوشته شده توسط eyes_shut_number1 در بخش C#‎‎
    پاسخ: 4
    آخرین پست: پنج شنبه 01 اسفند 1387, 07:46 صبح
  5. بدست آوردن کد کلید فشرده شده
    نوشته شده توسط mehdi_moosavi در بخش برنامه نویسی در Delphi
    پاسخ: 9
    آخرین پست: پنج شنبه 09 مهر 1383, 19:04 عصر

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

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