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

نام تاپیک: طریقه ارسال پارامتر به SQL

  1. #1
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    کرمان-کرمان
    پست
    334

    Question طریقه ارسال پارامتر به SQL

    سلام به همه دوستان
    می خواستم طریقه ارسال پارامتر به SQL رو با یک مثال توضیح بدید
    و یا کد زیر رو اصلاح کنید
    در تایپیک های C#‎ و SQL به دنبال این موضوع گشتم اما مطالب موجود در سطح بالاتری بودند

    من در پنجره solution explorer بر روی اسم پروژه راست کلیک کردم و از add new item یک database به اون اضافه کردم و مراحل تولید dataset رو بوسیله wizard طی کردم و یک table ساختم و یک procedure ساختم
    که کارش گرفتن رشته از برنامه و ذخیره اون در پایگاه است(البته این اولین procedure است که نوشتم !)

    اگر امکان داره یک منبع هم در این مورد معرفی کنید.
    کد برنامه
            public void store()
    {
    SqlConnection objConnection = new SqlConnection ("Data Source=.'\'SQLEXPRESS;AttachDbFilename=G:'\'SALEH\ vsproject\testsp\testsp\testsp.mdf;Integrated Security=True;User Instance=True");
    SqlCommand objCommand = new SqlCommand();
    objCommand.Connection = objConnection;
    SqlDataAdapter objDataAdapter = new SqlDataAdapter();
    objDataAdapter.SelectCommand = new SqlCommand();
    objDataAdapter.SelectCommand.Connection = objConnection;
    objDataAdapter.SelectCommand.CommandText = "dbo.StoredProcedure1";
    objDataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure;
    objCommand.Parameters.AddWithValue("@name",tb_name .Text);
    objCommand.Parameters.AddWithValue("@phone",tb_pho ne.Text);
    objConnection.Open();
    objCommand.ExecuteNonQuery();
    objConnection.Close();

    }

    کد رویه
    CREATE PROCEDURE dbo.StoredProcedure1 @name nvarchar(10),@phone nvarchar(10) 

    (
    @name varchar(10)
    @phone varchar(10)
    )

    AS
    /* SET NOCOUNT ON */
    insert into table1 values (@name,@phone)
    RETURN

    با تشکر

  2. #2
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    کرمان-کرمان
    پست
    334
    سلام به همه دوستان
    کسی می تونه کمکی یکنه؟؟؟

  3. #3
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491
    از کدام شیئ برای اجرای SP میخواید استفاده کنید؟
    شیئ objDataAdapter.SelectCommand هنوز پارامتری براش مشخص نشده...
    و شیئ objCommand هنوز دستور SQL ای براش تعریف نشده...

  4. #4
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    کرمان-کرمان
    پست
    334
    سلام راستش رو بخواهید
    درست نمی دونم اگه امکان داره همین کد رو اصلاح کنید
    ممنونم

  5. #5
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    کرمان-کرمان
    پست
    334
    سلام PC2st.ir جان
    کد برنامه رو اینطور تغیر دادم
          public void store()
    {
    SqlConnection objConnection = new SqlConnection ("Data Source=.'\'SQLEXPRESS;AttachDbFilename=G:'\'SALEH\ vsproject\testsp\testsp\testsp.mdf;Integrated Security=True;User Instance=True");
    SqlCommand objCommand = new SqlCommand();
    objCommand.Connection = objConnection;
    objCommand.CommandText = "dbo.StoredProcedure1";
    objCommand.CommandType = CommandType.StoredProcedure;
    objCommand.Parameters.AddWithValue("@name",tb_name .Text);
    objCommand.Parameters.AddWithValue("@phone",tb_pho ne.Text);
    objConnection.Open();
    objCommand.ExecuteNonQuery();
    objConnection.Close();

    }


    حالا چکار کنم؟

  6. #6
    کاربر دائمی آواتار mahtab_18
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    مشهد
    پست
    114
    سلام
    امیدوارم این کد بتونه کمکت کنه


    SqlConnection con = newSqlConnection("Data Source=WE\\SQLEXPRESS;Initial Catalog=dbname;Integrated Security=True");



    SqlCommand com = newSqlCommand();
    SqlDataAdapter da = newSqlDataAdapter();
    con.Open();
    com.Connection = con;
    com.CommandText = "INSERT INTO sabtmelk(malek,telm,mobile) VALUES(@malek,@telm,@mobilem)";
    com.Parameters.Add("@malek", SqlDbType.NVarChar, 50).Value = t3.Text;
    com.Parameters.Add("@telm", SqlDbType.NVarChar, 50).Value = t5.Text;
    com.Parameters.Add("@mobilem", SqlDbType.NVarChar, 50).Value = t6.Text;
    com.ExecuteNonQuery();
    con.Close();


  7. #7
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    کرمان-کرمان
    پست
    334
    از توجهتون ممنونم
    اما می خوام تو برنامه از procedure استفاده کنم
    باز هم تشکر

  8. #8
    کاربر دائمی آواتار PC2st
    تاریخ عضویت
    آذر 1385
    محل زندگی
    کرمانشاه
    سن
    38
    پست
    1,491
    SP چیزی شبیه به زیر باید باشه:

    ALTER PROCEDURE dbo.StoredProcedure1
    (
    @name varchar(10)
    @phone varchar(10)
    )
    AS
    INSERT INTO table1 VALUES (@name, @phone)
    RETURN

    در اینصورت، با توجه به کدهایی که نوشتید، قاعدتا باید درست کار کنه...
    چه اروری رو تولید میکنه و متن خطاش چیه!؟

  9. #9
    کدی که نوشتید 2 تا ایراد کوچولو داره که اصلاحش کردم

    SqlConnection objConnection = new SqlConnection("Data Source=.'\'SQLEXPRESS;AttachDbFilename=G:'\'SALEH\ vsproject\testsp\testsp\testsp.mdf;Integrated Security=True;User Instance=True");
    SqlCommand objCommand = new SqlCommand();
    objCommand.Connection = objConnection;
    objCommand.CommandText = "StoredProcedure1";
    objCommand.CommandType = CommandType.StoredProcedure;
    objConnection.Open();
    objCommand.Parameters.Add("@name", System.Data.SqlDbType.NVarChar, 10).Value=tb_name.Text;
    objCommand.Parameters.Add("@phone", System.Data.SqlDbType.NVarChar, 10).Value=tb_phone.Text;
    objCommand.ExecuteNonQuery();
    objConnection.Close();
    objConnection.Dispose();
    objCommand.Dispose();


    در ضمن در کدی که من نوشتم نوع پارامتر های Name, Phone را در Table1 به صورت Nvarchar به طول 10 تا در نظر گرفتم که اگر غیر از اینه خودتون زحمت بکشید و اصلاحش کنید
    و یک نکته دیگه اینکه StorProcedure ای که شما نوشتید اشتباهه ، که باید به شکل زیر اصلاحش کنی

    CREATE PROCEDURE dbo.StoredProcedure1
    (
    @name nvarchar(10),
    @phone nvarchar(10)
    )
    AS
    insert into table1 (name,phone) values (@name,@phone)
    RETURN



  10. #10
    نقل قول نوشته شده توسط smt_414 مشاهده تاپیک
    من در پنجره solution explorer بر روی اسم پروژه راست کلیک کردم و از add new item یک database به اون اضافه کردم و مراحل تولید dataset رو بوسیله wizard طی کردم و یک table ساختم و یک procedure ساختم
    که کارش گرفتن رشته از برنامه و ذخیره اون در پایگاه است(البته این اولین procedure است که نوشتم !)
    سلام دوست عزیز من فرصت نکردم که کد شما و کدی که بقیه دوستان دادن را بخونم و چک کنم
    ولی فعلا این موضوع مهم را میتونم بهتون بگم که سعی کنید همیشه از کد نویسی استفاده کنید تا ویزارد
    ویزارد فقط زمانی خوبه که بخواد جنبه آموزشی داشته باشه ولی اگه واقعا میخواین برنامه بنویسین همه چیز را خودتو بنویسید
    اینطوری هم تجربه و مهارتتون زیاد میشه هم اینکه با مشکلات نوشتن کد و خطاهایی که بهتون میده آشنا میشین هم اینکه بعد از مدتی توی debug کردن برنام ها و کد ها حرفه ای میشین و باعث میشه که تا یه error یا یه warning از کامپایلر میبینین فورا متوجه بشین که چی میگه و اشکال از کجاست
    ویزارد به نظر من 2 ایراد خیلی بزرگ داره
    1 ) دست آدم خیلی باز نیست
    2) چون معمولا ویزارد ها بدون خطا هستند باعث میشه که شما را از اصل داستان (یاد گیری) دور کنه

    البته اگه نازه کار هستین برای اوایل کار خوبه ولی .......
    موفق باشید
    کیانی

  11. #11
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    کرمان-کرمان
    پست
    334

    کد اصلاح شده

    سلام
    من دیتابیس رو به شیوه ای که گفته بودم ساختم و error زیر ر می داد
    An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)

    این دیتابیس رو من تو sql نداشتم (یعنی اونجا به وجود نیومده بود)
    به همین دلیل دیتابیس رو از برنامه حذف کردم و اون رو داخل sql ساختم
    و با کمک پروسیجوری که PC2st.ir لطف کرده بودند برنامه اجرا شد
    و برای کمک به دوستانی که در آینده به C#‎ رو می آرن , کد درست رو اینجا قرار می دم تا بتونن استفاده کنن
        public void store()
    {
    SqlConnection objConnection = new SqlConnection("Data Source=.;Initial Catalog=testsp;Integrated Security=True");
    SqlCommand objCommand = new SqlCommand();
    objCommand.Connection = objConnection;
    objCommand.CommandText = "StoredProcedure1";
    objCommand.CommandType = CommandType.StoredProcedure;
    objCommand.Parameters.AddWithValue("@name",tb_name .Text);
    objCommand.Parameters.AddWithValue("@phone",tb_pho ne.Text);
    objConnection.Open();
    objCommand.ExecuteNonQuery();
    objConnection.Close();

    }



    ALTER PROCEDURE dbo.StoredProcedure1 

    (
    @name nchar(10)
    @phone nchar(10)
    )

    AS
    /* SET NOCOUNT ON */
    insert into table1 values(@name,@phone)
    RETURN



    HAMID.reza جان از شما هم ممنونم


    اما یه سوال اسم پروسیجور ما dbo.StoredProcedure1 یا StoredProcedure1 من هر دو رو تو تابع store (کد بالا)امتحان کردم و جواب داد؟؟

  12. #12
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    کرمان-کرمان
    پست
    334
    سلام
    پروسیجور فوق هنگام save کردن error زیر رو می داد
    Incorrect syntax near '@phone'.
    Must declare the scalar variable "@name"

    با استفاده از دستور HAMID.reza این تغیر رو دادم و پروسیجور save شد
    @name nchar(10),

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

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