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

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

  1. #1

    مشکل در اجرای برنامه در ویژوال استودیو

    درهنگام اجرای برنامه در ویژوال استودیو پیغام در تصویر ضمیمه نمایش داده می شود معنی آن چیست و راه حل رفع این مشکل چیه؟


    نحوه اتصال دیتابیس مربوطه به این برنامه به چه صورت می باشد


    1.jpg


  2. #2
    مدیر کل سایت آواتار محمد آشتیانی
    تاریخ عضویت
    مهر 1384
    محل زندگی
    تهران
    پست
    1,535

    نقل قول: مشکل در اجرای برنامه در ویژوال استودیو

    سلام
    قبل از اجرای Command باید کانکشن رو باز کنی
    قوانین سایت برنامه نویس [ به سوالات از طریق پیام خصوصی پاسخ داده نمی شود ]

  3. #3
    کاربر دائمی آواتار mp_mp353
    تاریخ عضویت
    خرداد 1388
    محل زندگی
    خراسان رضوی شهرستان کاشمر
    سن
    30
    پست
    191

    نقل قول: مشکل در اجرای برنامه در ویژوال استودیو

    دوست عزیز آیا کانکشن شما به دیتابیس باز هست؟
    اگر دقت کنید در متن خطا هم نوشته که وضعیت اتصال به دیتابیس شما close می باشد.

  4. #4

    نقل قول: مشکل در اجرای برنامه در ویژوال استودیو

    نقل قول نوشته شده توسط mp_mp353 مشاهده تاپیک
    دوست عزیز آیا کانکشن شما به دیتابیس باز هست؟
    اگر دقت کنید در متن خطا هم نوشته که وضعیت اتصال به دیتابیس شما close می باشد.
    میشه روش رو توضیح دهید که به چه صورت کانکشن به دیتابیس باز می شود

  5. #5

    نقل قول: مشکل در اجرای برنامه در ویژوال استودیو

    نقل قول نوشته شده توسط hooman6180 مشاهده تاپیک
    میشه روش رو توضیح دهید که به چه صورت کانکشن به دیتابیس باز می شود
    اصولا موقع ایجاد SqlCommand برایش یک Connection مشخص می کنید. حالا یا به عنوان پارامتر دومی بعد از اون "...select * from" یا بعدا از طریق مشخصه Connection اش.
    مثلا :

    SqlCommand cmd = new SqlCommand("select * from Test", connection);

    یا :

    SqlCommand cmd = new SqlCommand("select * from Test");
    cmd.Connection = connection;

    اون connection باید Open شده باشه، بجز خود connection از طریق cmd.Connection هم بهش دسترسی دارید.
    با ()connection.Open یا ()cmd.Connection.Open بازش می کنید.
    تلاش برای باز کردن یک connection ای که قبلا Open شده منجر به خطا میشه، برای همین می توانید قبلش چک کنید که آیا از قبل Open هست یا نه.

    if (connection.State == ConnectionState.Closed)
    {
    connection.Open();
    }


    نمیخوام بگم لازمه که حتما روال کد نویسی تون رو تغییر بدید اما اگه لزومی نداره که connection همیشه باز بمونه و میخواهید در موقع لزوم باز و بعد استفاده بسته بشه،
    بهتره که از using استفاده کنید که یک روش اصولی است، using تضمین می کنه که ()Close انجام بشه :

    using (SqlConnection connection = new SqlConnection("your connection string"))
    {
    connection.Open();
    .
    .
    .
    }

  6. #6

    نقل قول: مشکل در اجرای برنامه در ویژوال استودیو

    سلام این کانکشن من هست ببینید درسته اگر اشکال داره بگید
    coonect.jpg

  7. #7

    نقل قول: مشکل در اجرای برنامه در ویژوال استودیو

    نقل قول نوشته شده توسط hooman6180 مشاهده تاپیک
    سلام این کانکشن من هست ببینید درسته اگر اشکال داره بگید
    coonect.jpg
    برای مقاصد شخصی که خودتون هر زمان بخواهید به کد دسترسی دارید و می توانید strConnectionstring رو تغییر بدهید مشکلی نیست، اما اگر قراره برنامه ای بنویسید که روی سیستم های دیگری یا در مسیری بجز اون ...D:\document بتونه مستقر و اجرا بشه، اون رشته ثابت داخل کد دردسر میشه چون باید قابل تغییر باشه، کاربر هم به کد احتیاج داره و هم کامپایلر ویژوال استدیو.
    بهتره که به کاربر این امکان رو بدید که رشته connection string متفاوتی رو برای برنامه ثبت کنه و از یک رشته ثابت داخل کد استفاده نکنید.
    مثلا از داخل یک فایل txt کنار فایل اجرایی برنامه بخونیدش، یا از یک مقدار داخل Application Settings یا از Application Configuration File یا ...


    var path = "database.txt";
    try
    {
    var strConnectionstring = System.IO.File.ReadAllLines(path)[0];
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message);
    }


    که البته بهتره مسیر فایل برای جستجو دقیقا محل فایل اجرایی برنامه باشه، نه مسیر پوشه فعلی :

    var folder = System.IO.Path. GetDirectoryName(Application.ExecutablePath);
    var path = System.IO.Path. Combine(folder, "database.txt");
    try
    {
    var strConnectionstring = System.IO.File.ReadAllLines(path)[0];
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message);
    }


    می توانید در منوی ...Project > {projectname} Properties ویژوال استدیو در زبانه Settings یک مقدار مثلا با نام MyConnectionString و از نوع string اضافه کنید تا داخل کد برنامه از اونجا مقدار بخونید :

    try
    {
    var strConnectionstring = Properties.Settings.Default.MyConnectionString;
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message);
    }


    یا از کاربر مقدارش رو دریافت کنید و ذخیره کنید :

    try
    {
    Properties.Settings.Default.MyConnectionString = textBox1.Text;
    Properties.Settings.Default.Save();
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message);
    }

  8. #8
    کاربر دائمی آواتار mp_mp353
    تاریخ عضویت
    خرداد 1388
    محل زندگی
    خراسان رضوی شهرستان کاشمر
    سن
    30
    پست
    191

    نقل قول: مشکل در اجرای برنامه در ویژوال استودیو

    میتونی برای دریافت اطلاعات بیشتر برای کار با دیتابیس از کلاس زیر استفاده کنی



    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data;
    using System.Data.SqlClient;


    namespace App
    {
    class DBclass
    {


    public static SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\DB.mdf;Integrated Security=True;User Instance=True;");
    public static string connection_string = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\DB.mdf;Integrated Security=True;User Instance=True;";


    public static DataSet _Select(string command, string tablename)
    {
    if (con.State != ConnectionState.Open)
    {
    con.Open();
    }
    //command = command.Replace('ي', 'ی');
    SqlDataAdapter da = new SqlDataAdapter(command, con);
    DataSet ds = new DataSet();
    da.Fill(ds, tablename);
    con.Close();
    return ds;
    }


    public static void _Insert(string commandText)
    {
    if (con.State != ConnectionState.Open)
    {
    con.Open();
    }
    //command = command.Replace('ي', 'ی');
    SqlCommand com = new SqlCommand(commandText, con);
    com.ExecuteNonQuery();
    con.Close();
    }


    public static void _Insert(SqlCommand command)
    {
    if (con.State != ConnectionState.Open)
    {
    con.Open();
    }
    command.Connection = con;
    command.ExecuteNonQuery();
    con.Close();
    }


    public static int get_id(String tablename)
    {
    if (con.State != ConnectionState.Open)
    {
    con.Open();
    }
    int id = 1;
    SqlDataAdapter da = new SqlDataAdapter("SELECT id FROM " + tablename + " ORDER BY id", con);
    DataSet ds = new DataSet();
    da.Fill(ds, tablename);
    con.Close();
    if (ds.Tables[0].Rows.Count > 0)
    {
    for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
    {
    if (Convert.ToInt32(ds.Tables[0].Rows[i][0].ToString()) != id)
    {
    return id;
    }
    id++;
    }
    }
    return id;
    }
    }
    }


    آخرین ویرایش به وسیله ژیار رحیمی : سه شنبه 19 فروردین 1399 در 22:38 عصر

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

  1. پاسخ: 2
    آخرین پست: دوشنبه 14 مهر 1393, 19:53 عصر
  2. پاسخ: 0
    آخرین پست: سه شنبه 02 اردیبهشت 1393, 17:05 عصر
  3. سوال: فرق میان ویژوال استودیو و ویژوال استودیو دات نیت چیست؟
    نوشته شده توسط Abdul Hadi در بخش VB.NET
    پاسخ: 2
    آخرین پست: سه شنبه 10 اردیبهشت 1392, 00:30 صبح
  4. پاسخ: 3
    آخرین پست: دوشنبه 22 فروردین 1390, 22:03 عصر

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

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