اتصال به دیتابیس در ASP.NET - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

اتصال به دیتابیس در ASP.NET

0 امتیاز

سلام

میخوام ثبت نام و لاگین داشته باشم که با اتصال به دیتابیس کار کنه. خیلی سرچ کردم و کدهای مختلفی رو امتحان کردم ولی هیچکدوم جواب نداد. آخرین موردی که تست کردم این بود که این اطلاعات رو داخل فایل WEB.CONFIG وارد کردم:

<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0"/>
  </system.web>

  <appSettings>
    <add key="ConnectionString" value="Data Source=.\DESKTOP-KEO83RP;Initial Catalog=Knitting_db.mdf;Integrated Security=True;"/>
  </appSettings>


  <connectionStrings>
    <add name="ConnectionString" connectionString="Data Source=.\DESKTOP-KEO83RP;Initial Catalog=Knitting_db.mdf;Integrated Security=True;"/>
  </connectionStrings>

</configuration>

و در ادامه این کدها رو داخل بک اند صفحه م نوشتم:

public partial class WebForm1 : System.Web.UI.Page
    {
        public System.Data.SqlClient.SqlConnection cnn = new System.Data.SqlClient.SqlConnection(ConfigurationSettings.AppSettings["connectionString"].ToString());

        protected void BtnReg_Click(object sender, EventArgs e)
        {
            try
            {
                SqlCommand cmdSave = new SqlCommand();

                cmdSave.Connection = cnn;
                cmdSave.CommandText = "insert into user_tb (fName,lName,user,pass,mail) values(@fName,@lName,@user,@pass,@mail)";
                cmdSave.Parameters.Add("@fName", SqlDbType.NVarChar).Value = txtlName.Text.Trim().ToString();
                cmdSave.Parameters.Add("@lName", SqlDbType.NVarChar).Value = txtfName.Text.Trim().ToString();
                cmdSave.Parameters.Add("@mail", SqlDbType.VarChar).Value = txtMail.Text.Trim().ToString();
                cmdSave.Parameters.Add("@user", SqlDbType.VarChar).Value = txtUser.Text.Trim().ToString();
                cmdSave.Parameters.Add("@pass", SqlDbType.VarChar).Value = txtPass1.Text.Trim().ToString();

                if (this.cnn.State != ConnectionState.Open)
                    this.cnn.Open();
                cmdSave.ExecuteNonQuery();
                this.cnn.Close();
                Response.Redirect("Index.aspx");
                lblMsgR.Text = "ثبت نام شما با موفقیت انجام شد.";
                lblMsgR.ForeColor = System.Drawing.Color.Blue;
                BtnReg.Visible = false;
            }
            catch (Exception ex)
            {
                lblMsgR.Text = "ثبت نام ناموفق! دوباره تلاش کنید.";
                lblMsgR.ForeColor = System.Drawing.Color.Red;
            }

        }

        protected void BtnLog_Click(object sender, EventArgs e)
        {
            lblMsgL.Text = "Hello";
        }
 }

این هم بگم که دیتابیسم رو داخل خود ویژوال استدیو و قسمت server explorer ساختم. رشته اتصالم هم خیلی با چیزی که تو اینترنت سرچ کردم متفاوت بود و مجبور شدم تغییرش بدم. رشته اتصالی که از طریق دیتابیسم به دست آوردم اینه:

Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\NAME\Documents\Knitting_db.mdf;Integrated Security=True;Connect Timeout=30

واقعا ممنونتون میشم اگر جواب بدین و راهنماییم کنیدfrown

سوال شده مرداد 5, 1399  بوسیله ی simaorama (امتیاز 16)   2 3 3
سلام.دوست عزیز اگه کد توی catch میفته، لطفا متن خطا رو بگذارید تا دقیقتر بشه نظر داد.ولی چیزی که در نگاه اول به نظر میرسه اینه که کانکشن نیاز به اصلاح داره.خط تعریف متغیر cnn رو با این خط جایگزین بفرمایید و تست بزنید :

public System.Data.SqlClient.SqlConnection cnn = new System.Data.SqlClient.SqlConnection("Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=C:\\Users\\NAME\\Documents\\Knitting_db.mdf;Integrated Security=True;Connect Timeout=30");
خطا که نمیده اصلا. ولی منظورتون درمورد catch متوجه نشدم، ممکنه بگید کدوم قسمته؟
اصلا رشته اتصالم درسته؟ هرچی تو اینترنت سرچ کردم کانکشن استرینگها اصلا شبیه کانکشن استرینگ من نبود :(
ممنونم، این کدی که گفتین رو الان امتحان میکنم
انجام دادم ولی متاسفانه 99+ تا ارور خورد :(
دوست عزیز صادقانه خدمتتون عرض کنم ، سوالی که درباره catch پرسیدید واقعا ناامیدکننده است ومثل اینه که یه دانشجوی ریاضی محض بگه من نمی دونم معادله درجه 1 چیه!!!! مبحث asp.net بسیار پرچالش تر از اونی هست که شما بهش برخوردید و با توجه به اینکه به نظر میاد شما هنوز تسلط کافی در برنامه نویسی (مفاهیم ، کدنویسی ، دیباگینگ و ...) پیدا نکردید،توصیه کاملا دوستانه و محترمانه بنده به شما اینه که در گام اول به مباحث مختلف در برنامه نویسی مسلط بشید و بعد از اون وارد مبحث سنگینی مثل asp.net بشید.می بخشید،قصد جسارت نداشتم.این ها رو صرفا در جهت پیشرفت اصولی و گام به گام خودتون عرض کردم.
خواهش میکنم، شما درست میگید. خودمم میدونم چیز زیادی از برنامه نویسی نمیدونم. این پروژه هم برای دانشگاهم میخوام. متاسفانه این ترم چون کلاسها به صورت مجازی برگزار شده هیچ بازدهی برام نداشت و بدتر اینکه تا قبل از این ترم هیچ مبحث مهمی از برنامه نویسی رو آموزش ندیدیم.
فقط میخوام این ترم تموم بشه و از بین 20 گیگ آموزش برنامه نویسی که دانلود کردم بهترین آموزش رو شروع کنم و کمی جلو برم و جبران کنم.
ممنونم از اینکه جواب دادین
اما فی الحال در مورد سوالتون باید مختصرا عرض کنم که کد اصلی که برای اجرا مدنظر هست داخل بلوک try نوشته میشه.اگرهنگام اجرای این بلوک ، خطی به خطا برخورد کنه،برنامه به بلوک catch پرش میکنه و اون رو اجرا میکنه و بقیه بلوک try انجام نمیشه.توی بلوک catch شما می تونید خطا رو مدیریت کنید.
مشخصا درباره این کد ،شما می تونید ex یا ex.Message رو چاپ کنید و متن خطا رو ببینید و به دنبال راه حلش باشید.
یه راه دیگرش هم اینه که یه breakpoint روی try بگذارید و کدتون رو خط به خط دیباگ کنید و دقیقا ببینید کدوم خط برنامه رو وارد catch میکنه و اونجا جزییات ex رو باز کنید و شرح کاملی از خطا رو ببینید.
خواهش میکنم دوست عزیز.مطمئنا با داشتن این روحیه نقدپذیر و تصمیم بر یادگیری به هدفتون خواهید رسید.توصیه بنده ،شروع با ++C و در گام بعد  #C هست.موفق باشید.
اینی که فرمودین رو چون همراه با try استفاده میکنم به نام try catch میشناسم. وقتی شما گفتین catch، فکر کردم منظورتون کش مرورگره و ذهنم اصلا سمت کدها نرفت. به هرحال اشتباه از طرف من بود که درباره صحبتتون فکر نکردم.
ممنونم، حتما تست میکنم. بابت راهنماییتونم ممنونم، حتما از توصیه هاتون استفاده میکنم.

پاسخ شما

اسم شما برای نمایش (دلخواه):
از ایمیل شما فقط برای ارسال اطلاعات بالا استفاده میشود.
تایید نامه ضد اسپم:

برای جلوگیری از این تایید در آینده, لطفا وارد شده یا ثبت نام کنید.
...