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

نام تاپیک: خطا هنگام پاس دادن پارامتر به StoredProcedure

  1. #1

    خطا هنگام پاس دادن پارامتر به StoredProcedure

    دوستان من یک سرچ ساده دارم پروسیجر به شکل زیر که نمیتونم بهش پارامتر ارسال کنم . خیلی سرچ کردم ولی متاسفانه نتیجه ای نداشت.

    CREATE PROCEDURE [dbo].[spstest]
    (
    @model NVARCHAR (20)
    )
    AS
    begin
    SELECT * from Table where model = @model

    end


    سپس در سی شارپ میخوام پارامتر model را که در یک تمست باکس وارد میشه به پروسیجر پاس بدم ولی با خطا روبرو میشم .

    SqlCommand comm = new SqlCommand();
    comm.CommandType = CommandType.StoredProcedure;
    comm.Connection = con;
    comm.CommandText = "sptest" ;

    comm.Parameters.AddWithValue("@model", textBox1.Text);
    SqlDataAdapter da1 = new SqlDataAdapter();
    da1.SelectCommand = comm;
    DataTable dt = new DataTable();
    da1.Fill(dt);


    خطا :
    Procedure sptest has no parameters and arguments were supplied.
    آخرین ویرایش به وسیله itman.jam : دوشنبه 05 بهمن 1394 در 10:19 صبح

  2. #2
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1390
    محل زندگی
    چند قدم اون ور تر
    پست
    1,731

    نقل قول: خطا هنگام پاس دادن پارامتر به پروسیجر

    سلام
    یکی اینکه توی sp اسمش رو نوشتید pstest ولی سمت برنامه نوشتید sptest
    دوم اینکه وقتی از like استفاده می کنید در هنگام مقداردهی بسته به نیاز باید از % در طرفین عبارت استفاده کنید مثلاً "%"+textBox1.Text (البته شاید دلیل اون خطا این مورد نباشه)
    سوم اینکه وقتی از dataAdapter استفاده میکنید نیازی نیست از command هم استفاده کنید خود دیتاآداپتر خاصیت SelectCommand داره میتونید ازش استفاده کنید.

  3. #3

    نقل قول: خطا هنگام پاس دادن پارامتر به پروسیجر

    نقل قول نوشته شده توسط Mahmoud Zaad مشاهده تاپیک
    سلام
    یکی اینکه توی sp اسمش رو نوشتید pstest ولی سمت برنامه نوشتید sptest
    دوم اینکه وقتی از like استفاده می کنید در هنگام مقداردهی بسته به نیاز باید از % در طرفین عبارت استفاده کنید مثلاً "%"+textBox1.Text (البته شاید دلیل اون خطا این مورد نباشه)
    سوم اینکه وقتی از dataAdapter استفاده میکنید نیازی نیست از command هم استفاده کنید خود دیتاآداپتر خاصیت SelectCommand داره میتونید ازش استفاده کنید.
    ممنون از پاسختون مورد اول و دوم بخاطر غلط املایی بود در برنامه درست نوشته شده .
    مورد سوم هم بله ولی بدون اون هم تست کردم و نشد .

    در کل من وقتی این خط را حذف کنم برنامه بدون ایراد کار میکنه و خروجی دارم ولی به محض اینکه این خط را اضافه کنم اون خطا را میده :

    comm.Parameters.AddWithValue("@model", textBox1.Text);

  4. #4

    نقل قول: خطا هنگام پاس دادن پارامتر به پروسیجر

    سلام دوست عزیز
    در اینجا باید نوع پارامتر رو ذکر کنی و در نهایت مقدار رو ست کنی

    comm.Parameters.Add("@model", SqlDbType.NVarChar, 50).Value = textBox1.Text;

    و در ضمن دیتا اداپتر باید حتما بهش دستور کوئری رو بدید اونی که شما نوشتید کامندی هست که نام یک پارامتر درونش هست پس قبول نمیکنه

    روش ساده تره اینه

    string cmd = "select * from Table where model ='" + textBox1.Text + "'";
    con.Open();
    SqlDataAdapter info = new SqlDataAdapter(cmd, con);
    DataTable dt = new DataTable();
    info.Fill(dt);
    dataGridView1.DataSource = dt;
    con.Close();


    اگر هم با پروسیجر میخوای بنویسی از دیتا ریدر استفاده کن
    https://www.csharp-station.com/Tutor...otNet/Lesson04

    این خیلی بهت کمک میکنه
    https://msdn.microsoft.com/en-us/library/d7125bke.aspx

    SqlConnection sqlConnection1 = new SqlConnection("Your Connection String");
    try
    {
    SqlCommand cmd = new SqlCommand();
    SqlDataReader reader;
    cmd.CommandText = "StoredProcedureName";
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Connection = sqlConnection1;
    sqlConnection1.Open();
    reader = cmd.ExecuteReader();
    while (reader.Read())
    {
    // get the results of each column
    string contact = (string) reader["نام ستون هات"];
    string company = (string) reader["نام ستون بعدی"];
    string city = (string) reader["هر چندتا ستون رو به ترتیب دریافت کن "];
    reader.NextResult();
    }
    // data access code
    }
    finally
    {
    // 3. close the reader
    if (reader != null)
    {
    reader.Close();
    }

    sqlConnection1.close(); // close the connection too }
    }
    آخرین ویرایش به وسیله Mahmoud.Afrad : دوشنبه 05 بهمن 1394 در 19:20 عصر

  5. #5

    نقل قول: خطا هنگام پاس دادن پارامتر به پروسیجر

    نقل قول نوشته شده توسط ahmad.jafery مشاهده تاپیک
    سلام دوست عزیز
    در اینجا باید نوع پارامتر رو ذکر کنی و در نهایت مقدار رو ست کنی

    comm.Parameters.Add("@model", SqlDbType.NVarChar, 50).Value = textBox1.Text;


    و در ضمن دیتا اداپتر باید حتما بهش دستور کوئری رو بدید اونی که شما نوشتید کامندی هست که نام یک پارامتر درونش هست پس قبول نمیکنه



    روش ساده تره اینه


    string cmd = "select * from Table where model ='" + textBox1.Text + "'";
    con.Open();


    SqlDataAdapter info = new SqlDataAdapter(cmd, con);


    DataTable dt = new DataTable();
    info.Fill(dt);
    dataGridView1.DataSource = dt;
    con.Close();
    ممنون دوست عزیز . روش دوم که خب خیلی خوب نیست میخوام از پروسیجر استفاده کنم .
    الان مشکلی با فراخوانی پروسیجر ندارم . ینی همین کد که نوشتم داره کار میکنه ولی مشکل من اینجاست که میخوام مقدار یک تکست باکس را به پروسیجر پاس بدم ولی با نوشتن کد مربوطه ارور میده .

    الان با توجه به این پروسیجر اگر ما بخوایم یک مقدار را بهش پاس بدیم تا در شرط ازش استفاده کنه چه کدی باید بنویسیم ؟ من 2 روزه دارم سرچ میکنم ولی نمیتونم مشکل را پیدا کنم .

    امیتونید کدی که روی سیستم خودتون جواب میده را بزارید ؟

  6. #6
    کاربر دائمی آواتار CsharpNevisi
    تاریخ عضویت
    بهمن 1391
    محل زندگی
    تهران
    پست
    1,489

    نقل قول: خطا هنگام پاس دادن پارامتر به پروسیجر


    SqlParameter[] param = new SqlParameter[]{
    new SqlParameter("@model",textBox1.Text)
    };

    comm.Parameters.AddRange(param);


    اینو تست کن

  7. #7

    نقل قول: خطا هنگام پاس دادن پارامتر به پروسیجر

    سلام
    نحوه ی ارسال پارامتر


    ;com1.Parameters.Add("@parametrname", SqlDbType.NVarChar,50).Value = txtname.Text


    parametrname اسم پارامتر خودتو بذار
    قسمت دوم هم نوع شو مشخص کن همونی که در اس کیو ال مشخص کردی

    اگر هم پارامتر ارسالیت از نوع عدد هست باید تبدیل بشه

    ;(com1.Parameters.Add("@id", SqlDbType.Int).Value = Convert.ToInt32(cmbid.Text

  8. #8

    نقل قول: خطا هنگام پاس دادن پارامتر به پروسیجر

    ممنون دوستان مشکل حل شد . نمیدونم چرا وقتی پروسیجر را بستم و دوباره اجرا کردم خط تعریف پارامترش پاک شده بود و دیدم پارامتری داخلش نیست !!! سی شارپ بی زبون هم همش میگفت این پارامتر نداره و من میگفتم داره !!
    به هر حال با باز و بسته کردن پروسیجر مشکل مشخص شد .

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

  1. سوال: پاس دادن پارامتر به webconfig
    نوشته شده توسط sheitoonbala در بخش ASP.NET Web Forms
    پاسخ: 4
    آخرین پست: جمعه 15 آذر 1387, 21:50 عصر
  2. سوال: پاس دادن پارامتر به fastrport
    نوشته شده توسط nikan84 در بخش ابزارهای گزارش سازی در دلفی
    پاسخ: 1
    آخرین پست: جمعه 12 مهر 1387, 02:05 صبح
  3. پاس دادن پارامتر به Store Procedure
    نوشته شده توسط سلماس در بخش VB.NET
    پاسخ: 7
    آخرین پست: شنبه 02 مهر 1384, 22:01 عصر
  4. پاس دادن پارامتر به کریستال ریپورت در وی بی
    نوشته شده توسط ario در بخش برنامه نویسی در 6 VB
    پاسخ: 13
    آخرین پست: چهارشنبه 14 اردیبهشت 1384, 22:00 عصر
  5. پاس دادن پارامتر به یک web form
    نوشته شده توسط saffari2005 در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: شنبه 12 دی 1383, 21:42 عصر

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

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