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

نام تاپیک: ASP.NET و پايگاه داده

  1. #1
    کاربر دائمی آواتار baran_mehr
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    شهر آفتاب گرمسار
    پست
    1,129

    ASP.NET و پايگاه داده

    سلام به همه دوستان عزیز
    در اين مقاله شما در مورد کار با با پايگاه داده در ASP.NET آشنا خواهيد شد. بدين معنا که در صدد هستيم تا رويه ای کلی از مفاهيم، روشها وابزارهای مورد استفاده در ASP.NET جهت برقراری ارتباط با پايگاه داده، نشان دادن داده ها، دستکاری داده ها، بهنگام سازی و... توسط اشيايی چون مهيا کننده های بانک های اطلاعاتی، DataSetها XML، و ... معرفی می شود.

    اگر تا بحال با پايگاه داده کار نکرده ايد شايد provider يک پايگاه داده برای شما نامفهوم باشـد. بطور خلاصه راهی را که بايد طی کرد تا به پايگاه داده متصل شده، آنرا باز کرده و داده ها را دستکاری کرده و دستورات را اجرا نمود، بوسيله يک تهيه کننده اطلاعات مشخص می شود. در ASP.NET معمولا از دو روش برای اين کار استفاده می شود. روش اول اينکه اگر پايگاه داده شما از نوع SQL Server باشد بايستی با مدل SQLClient کار کرد و اگر پايگاه داده شما غير از SQL Server باشد (در حال حاضر) بايد از روش ديگر يعنی مدل OleDb استفاده نمود. بعنوان مثال اگر پايگاه داده شما Oracle ،Sybase و يا Access باشد بايد از روش OleDb استفاده کنيد.

    روش کار بدين صورت است که ابتدا بايستی فضانام زير را در صفحاتی که از بانک اطلاعاتی استفاده می شود فراخوانی کرد:

    <% @ Import NameSpace="System.Data" %>
    <% @ Import NameSpace="System.Data.OleDb" %>


    برای برقراری ارتباط با پايگاه معمولا از عبارت زير استفاده می شود:

    Dim ObjConn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; DataSource=e:\db\users.mdb")


    که قسمت DataSource آدرس فايل پايگاه داده است که در اينجا يک بانک Access است. همانگونه که ملاحظه می کنيد از رشته ارتباطی يا Connection String بعنوان پارامتر استفاده شده است و بوسيله متد Open ارتباط باز می شود:

    objConn.Open()


    لازم به توضيح است که در پايان کار بوسيله متد Close ارتباط را خاتمه می دهيم.

    بمحض ارتباط با پايگاه داده می توان دستورات را به آن فرستاد. اين کار معمولا بوسيله شی OleDbCommand انجام می شود. جهت انجام اين کار می توان يک دستور SQL يا نام يک روال ذخيره شده (Stored Procedure) را مشخص نمود و بنا به مقتضيات می توان اعمال مختلفی را روی پايگاه پياده نمود:

    Dim objCommand As New OleDbCommand ( "Select * From users", objConn )


    ملاحظه می کنيد که کلاس Command از دو پارامتر رشته SQL و نام رشته ارتباطی برای فرستادن دستورات به پايگاه داده استفاده می کند. برای مثال آنچه را که در عبارت فوق ديديد می توان به بخشهای کوچکتر زير تقسيم کرد.

    ابتدا تعريف شي:

    Dim objCommand As New OleDbCommand()


    سپس نسبت دادن آن به رشته ارتباطی جهت برقراری ارتباط پايگاه:

    objCommand.Connection= objConn

    مشخص کردن عمليات مورد نظر بوسيله دستورات SQL:

    objCommand.CommandText="Select * From Users"

    حتی می توانيد عمليات فوق را بصورت ذيل انجام دهيد:

    Dim objCommand As New OleDbCommand( SQL string, Connection string )
    روشهای فوق دقيقا يک کار مشابه را انجام می دهند با اين اوصاف که در عبارت آخر بجای شئ ارتباطی از يک رشته ارتباطی استفاده شده است. تا اين مرحله هنوز عبارات فوق را به اجرا در نياورده ايم. برای اين کار راه های متفاوتی وجود دارد:

    - از ExecuteNonQuery زمانی استفاده می شود که قصد برگرداندن داده ها از پايگاه مورد نظر نباشد مثلا در مواقعی که از دستورات SQL جهت درج (Insert) و بهنگام سازی (Update) استفاده شود.

    objCommand.ExecuteNonQuery

    - از ExecuteReader برای خواندن و برگرداندن اطلاعات از پايگاه استفاده می کنيم.

    Dim ObjRead As OleDbDataReader
    objRead=objCommand.ExecuteReader

    - برای دستکاری يک تک مقدار مشخص و مورد نظر از متد ExecuteScalar استفاده می شود.

    برای خواندن داده ها معمولا از کلاس DataReader استفاده می شود -برای خواندن نه برای اضافه کردن يا بروز کردن- اين شئ بصورت مستقيم به پايگاه داده دسترسی دارد و فقط خواندنی (Read Only) است. البته اين خاصيت محدوديتی برای آن است اما برای خواندن ساده داده روشی کامل بشمار می رود.


    Dim objReadaer As OleDbDataReader
    objReader=objCommand.ExecuteReader
    Whlie objReader.Read
    Response.write(objReader.GetString(0)& " <br> " )
    End While


    عبارت فوق جهت نمايش و چاپ داده ها بکار می رود. متد Read خواندن را تا زمانيکه به پايان نتايج نرسد ادامه می دهد و عبارت objReader.GetString(0) برای برگرداندن نسخه رشته ای ستونهای رکورد کاربرد دارد. در ليست زير چند متد ديگر برای برگرداندن مقادير داده ای متغيرها آمده است:

    GetBoolean(x) مقدار منطقی را بر می گرداند.
    GetChar(x) مقدار کاراکتری را برمی گرداند.
    Get DataTypeColumn(x) نوع داده را در ستون برميگرداند.
    GetString(x) مقداررشته ای را برمی گرداند.
    و...

    در اين بخش شما به دانسته های بخش اول نياز داريد. شئ بعدی که مورد بحث قرار می گيرد کلاس Data Adapter است. OleDBDataAdapter اطلاعات را می گيرد و يک ارتباط منطقی بين داده ها و کلاس Dataset ايجاد ميکند. بطور کلی ميتوان گفت Data Adapter در نظر اول معادل Data Command می باشد. روش استفاده از Data Adapter ها بطور معمول بصورت زير تعريف می شود:


    Dim objAdapter As New OleDBDataAdapter("Select * From Users",objConn)



    ملاحظه می کنيد که شئ Adapter از دو پارامتر- يکی رشته دستورات SQL و ديگری رشته ارتباطی - برای فرستادن دستورات به پايگاه داده استفاده می کند. بطور معمول DataAdapter برای پرکردن DataSetها و بروز کردن پايگاه بوسيله يک DataSet و اجرا کردن دستورات بکار می رود. اکنون نمای کلی از کاربرد فوق را در زير می بينيد:


    Dim ds As DataSet = New DataSet()
    objAdapter.Fill(ds,"Users")



    متد Fill جهت اجرای دستور تنظيم شده در Data Adapter بکار می رود. بعبارت ديگر اطلاعات واکشی شده از پايگاه داده در يک جدول با نامی که ما تعيين می کنيم (Users) ذخيره می شود.
    نکته ضروری اينست که تکنيک Mappings در اکثر مواقع کارساز است. Mappings عبارت است از ساختن يک نام مستعار (Alias) برای نام جداول در يک Dataset. اين aliasها هيچگونه تاثيری در منبع داده ندارد و وقتی که بوسيله DataAdapter فرستاده می شود بصورت خودکار بنام پيش فرض تبديل ميشود. اين تکنيک باعث خوانايی کد و راهنمايی برنامه نويس در ارجاع های بعدی وتشخيص جداول فراخوانی شده ميشود.


    objAdapter.TableMappings.Add("adbtable","Users")
    with objAdapter.tableMapping(0).ColumnMappings
    .Add("PID","ID")
    .Add("LAstName","Lname")
    .Add("StreetAddress","Addy")
    End with
    objAdapter.Fill(ds)



    در تکنيک فوق بجای استفاده از عبارت ds.Tables("adbtable") ميتوانيم Ds.Tables("Users") را بکار ببريم. در بخشهای آينده ديگر فوايد استفاده از Mappings آمده است. همچنين کلاس CommandBuilder برای بهنگام کردن يک بانک که بوسيله Dataset صورت گرفته يک شيوه صحيح بشمار ميرود:


    Dim cmdBLD As New OleDBCommandBuilder(objAdapter)



    که در عبارت فوق شئ objAdapter بعنوان پارامتر به دستور CommandBuilder فرستاده شده و سپس بوسيله متد Update منبع داده بهنگام می شود:


    objAdapter.Update(ds,"Users")



    در ادامه، مثال زير بعنوان جمع بندی مطالب قبلی آمده است. توجه داشته باشيد در مثال زير نتيجه ای بعنوان خروجی در مرورگر نمايش داده نمی شود و فقط از منبع داده ای اطلاعات خوانده شده و يک شئ Dataset پر می شود:


    <%@ Import NameSpace="System.data" %>
    <%@ Import NameSpace="System.Data.OleDB" %>

    <Script Language="VB" Runat="Server">

    Sub Page_Load( Sender As Object, E As EventArgs)
    Dim objConn As New OleDBConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0; DATA Source=e:\db\users.mdb")

    objConn.Open()
    Dim ds As DataSet=New DataSet
    Dim objAdapter As New OleDBDataAdapter("Select * From Users",objConn)
    Dim objcmdBLD As New OleDBCommandBuilder(objAdapter)
    Obj.Adapter.Fill(ds,"Users")
    End Sub

    </Script>

  2. #2
    کاربر تازه وارد
    تاریخ عضویت
    آبان 1389
    محل زندگی
    يه جايي همين نزديكي ها...
    پست
    47

    نقل قول: ASP.NET و پايگاه داده

    بابت همه اين توضيحات ممنونم
    مشکل من اينه که ميخوام يک فيلد خاص رو روي يک label نمايش بدم مثلا هر کاربري که وارد صفحه شد وقتي کد کاربري خودش رو وارد کرد بالاي صفحه بوسيله يک label اسمش رو چاپ کنيم و خوش آمد بگيم

  3. #3
    کاربر دائمی آواتار baran_mehr
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    شهر آفتاب گرمسار
    پست
    1,129

    نقل قول: ASP.NET و پايگاه داده

    مشکل من اينه که ميخوام يک فيلد خاص رو روي يک label نمايش بدم مثلا هر کاربري که وارد صفحه شد وقتي کد کاربري خودش رو وارد کرد بالاي صفحه بوسيله يک label اسمش رو چاپ کنيم و خوش آمد بگيم
    خوب این کار به این بستگی داره که از چه سیستمی برای ورود استفاده میکنید.
    اگر از خود سیستم asp استفاده میکنید که یک شئ برای این کار وجود داره
    اگر هم دستی این کار رو انجام میدید میتونید بعد از login کردن کاربر با استفاده از سشن و یا کوکی و یا ... اسم و فامیلی کاربر رو بین صفحات ارسال کنید.
    یعنی بعد از لوگین کردن کاربر ، در صورتی که کاربر وجود داشت نام و نام خانوادگی رو واکشی کنید و به سشن و یا ... بدید

  4. #4

    مشكل

    با سلام و تشكر از مطالب بسيار عالي كه قرار داده ايد.
    مشكل من با asp اينه كه ميخوام داده ها رو مستقيم از بانك اطلاعتي بر روي textbox و يا label ببينم.
    نه اينكه بره داخل datagrid و datalist . آيا راهي داره كه من مثلا داده رو داخل textbox وارد كنم داخل بانك اطلاعاتي ذخيره بشه و بعد اون داده و يا داده هاي كه جستجو ميكنم داخل تكست باكس براي ويراش لود كنم. اگه بشه يك مثال هم بزاريد خيلي ممنون ميشم.
    لطفا منو راهنمايي كنيد.هر جايي كتابي ، مثلايي گير ميارم همه با استفاده از datagrid كار ميكنن.لطفاا كمكم كنيد

  5. #5
    کاربر دائمی آواتار baran_mehr
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    شهر آفتاب گرمسار
    پست
    1,129

    نقل قول: ASP.NET و پايگاه داده

    خوب وقتی داده ها رو واکشی کردید ،درون datatable بریزید و از datatable اطلاعات رو به textbox بدهید
    اگر هم از dataset استفاده میکنید همین کار رو با dataset انجام دهید

  6. #6

    ASP.NET و پايگاه داده

    با تشكر از شما baran_mehr جان.
    ميشه لطف كني يه مثال با mysql برام بزاري.مثلا يك فيلد به نام id را با1 textbox پر كنيم و اطلاعات ذخيره شده را به وسيله يه تكست باكس به نام textbox2 واكشي كنيم.
    با تشكر

  7. #7
    کاربر دائمی آواتار baran_mehr
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    شهر آفتاب گرمسار
    پست
    1,129

    نقل قول: ASP.NET و پايگاه داده

    یک تیکه کد میزارم خودتون بقیشو انجام بدید تا باهاش اشنا بشید و اگر نتونستید بگید
    Dim cmd As New OleDbCommand
    Dim cnt As New OleDbConnection
    Dim dt As New Data.DataTable
    Dim da As New OleDbDataAdapter

    برای واکشی اطلاعات و ریختن در datatable

    cnt.ConnectionString ="ConnectionString"
    cnt.Open()
    cmd.Connection = cnt
    cmd.CommandText = "Select * from table where id='"& TextBox1.text &"'"
    dt.Clear()
    da.SelectCommand = cmd
    da.Fill(dt)


    خوب حالا میتونید مقادیر درون dt (دیتا تیبل) رو استفاده کنید

  8. #8

    ASP.NET و پايگاه داده

    با تشكر از شما دوست عزيزي كه پاسخگوي ما مبتدي ها هستيد.
    واقعا عالي بود دستت درد نكنه.
    من با زبان #c كار ميكنم ميشه لطف كنيد كه از اين زبان مثال بزاريد.
    خواستم اينم بپرسم ببينم چرا وقتي اطلاعات رو با كد بالا داخل بانك اينسرت ميكنم چند تا كاراكتر خالي هم باهاش ذخيره ميشه مثلا اينجوري : . sajad يا . amir فاصله بين متن تا نقطه فرضي رو خالي ميندازه.
    خيلي ممنون.

    راستي اينم سايت منه اگه افتخاري داديد مهندس سري بزنيد من تو كار مايا هستم ولي علاقه زيادي هم به asp دارم.
    http://mayalearn.gigfa.com/
    آخرین ویرایش به وسیله behesht.royaha : یک شنبه 17 بهمن 1389 در 21:45 عصر

  9. #9
    کاربر دائمی آواتار baran_mehr
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    شهر آفتاب گرمسار
    پست
    1,129

    نقل قول: ASP.NET و پايگاه داده

    با تشكر از شما دوست عزيزي كه پاسخگوي ما مبتدي ها هستيد.
    من خودم هم هنوز مبتدی هستم
    راستي اينم سايت منه اگه افتخاري داديد مهندس سري بزنيد من تو كار مايا هستم ولي علاقه زيادي هم به asp دارم.
    http://mayalearn.gigfa.com/
    سایتتون رو دیدم سایت خیلی خوبیه

    و اما واکشی و ریختن مقدار در textbox
      objConnection.Open();
    objCommand.Connection = objConnection;
    objCommand.CommandText = "SELECT id FROM [table]";
    dt.Clear();
    da.SelectCommand = objCommand;
    da.Fill(dt);
    if( dt.Rows.Count != 0)
    TextBo2.Text = dt.Rows[0][0].ToString();
    objConnection.Close();

    da همون شی DataAdapter هست
    OleDbDataAdapter da = new  SqlDataAdapter ();

  10. #10

    نقل قول: ASP.NET و پايگاه داده

    با سلام ممنون از شما.
    يه سوال كه پيش اومده اينه كه چطور ميتونم به پايگاه داده mysql كانكت بشم و از اون استفاده كنم ؟؟

  11. #11
    کاربر دائمی آواتار baran_mehr
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    شهر آفتاب گرمسار
    پست
    1,129

    نقل قول: ASP.NET و پايگاه داده

    يه سوال كه پيش اومده اينه كه چطور ميتونم به پايگاه داده mysql كانكت بشم و از اون استفاده كنم ؟؟
    سلام
    متاسفانه در این مورد چیزی نمیدونم و تا به حال به mysql وصل نشدم. شاید بقیه دوستان بتونن کمک کنن

  12. #12

    نقل قول: ASP.NET و پايگاه داده

    با سلام دوست عزيز.
    ممنون بابت پاسخگويي سريعت.سوالي كه داشتم اينه كه چطور ميشه از focus استفاده كرد.ميخوام وقتي كه در تكست باكس يك هستم با زدن كليد اينتر برم تكست باكس 2. قبلا با ويژوال بيسيك مينوشتم اما اينجا بكلي فرق داره.
    ممنون

  13. #13
    کاربر دائمی آواتار baran_mehr
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    شهر آفتاب گرمسار
    پست
    1,129

    نقل قول: ASP.NET و پايگاه داده

    چطور ميشه از focus استفاده كرد.ميخوام وقتي كه در تكست باكس يك هستم با زدن كليد اينتر برم تكست باكس 2. قبلا با ويژوال بيسيك مينوشتم اما اينجا بكلي فرق داره.
    دوست عزیز سوالتون رو در یک پست جدید مطرح کنید چون این سوال مربوط به بحث دیتابیس نیست و با مطرح کردن در پست جدید کار قوانین سایت رو هم رعایت میکنید
    افرادی که وارد این پست میشن دنبال مطالبی مربوط به عنوان همین پست هستن ولی با پست هایی روبه رو میشن که با موضوع مرتبط نیست
    لطفا سوالتون رو در یک پست جدید مطرح کنید بنده پاسخ سوالتون رو در همون پست خواهم گذاشت
    موفق و پیروز باشید

  14. #14

    نقل قول: ASP.NET و پايگاه داده

    سلام میشه به زبان C#‎ هم آموزش بدید؟؟ در ضمن نحوه ارتباط با دیتابیس از طریق کلاس هم بگین.

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

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