Member 9579525 Ответов: 5

Не удалось найти ошибку хранимой процедуры


//Stored procedure
ALTER PROCEDURE dbo.HDR_PROFILE_proc(@first_name varchar(15), @middle_name varchar(15), @last_name varchar(15),
@address varchar(150), @Mob_No varchar(15),@birthdate datetime , @gender bit, @email_id varchar(50), @user_id varchar(15), @password varchar(15), @confirm_pass varchar(15), @country varchar(15), @city varchar(15)  )
	
AS
insert into DSProfile.HDR_PROFILE(first_name , middle_name ,last_name ,address , contact_number ,birth_date , gender, email_id, user_name , password , confirm_password ,country , city )values(@first_name , @middle_name , @last_name ,
@address , @Mob_No ,@birthdate  , @gender , @email_id ,  @user_id, @password , @confirm_pass , @country , @city   )
RETURN

//code
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;

public partial class _Default : System.Web.UI.Page
{
    SqlConnection con;
   
     
    protected void Page_Load(object sender, EventArgs e)
    {
        con = Connectivity.GetConnection();
        txt_userid.Enabled = false;
        txt_first_name.Focus();
       
    }

    protected void txtsubmit_Click(object sender, EventArgs e)
    {
        SqlCommand cmd = new SqlCommand("[dbo].[HDR_PROFILE_proc]", con);
        cmd.CommandType = CommandType.StoredProcedure;
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        //cmd.CommandText = "HDR_PROFILE_proc";
        
        cmd.Parameters.AddWithValue("@first_name", txt_first_name.Text);
        cmd.Parameters.AddWithValue("@middle_name", txt_middle_name.Text);
        cmd.Parameters.AddWithValue("@last_name", txt_last_name.Text);
        cmd.Parameters.AddWithValue("@address", txt_address.Text);
        cmd.Parameters.AddWithValue("@Mob_No", txt_mob_no.Text);
        cmd.Parameters.AddWithValue("@birthdate", Convert.ToString(txt_birthdate.Text));
        cmd.Parameters.AddWithValue("@gender", Rdo_gender.SelectedIndex);

        cmd.Parameters.AddWithValue("@email_id", txt_email.Text);

        if (Rdobtn_userid.Checked == true)
        {
            cmd.Parameters.AddWithValue("@user_name", txt_userid.Text);
            //cmd.Parameters.AddWithValue("@Login_with_email",'0');
        }
        //else
        //{ 
           // cmd.Parameters.AddWithValue("@Login_with_email",'1')
        //}
        
        cmd.Parameters.AddWithValue("@password", txt_pass.Text);
        cmd.Parameters.AddWithValue("@confirm_pass", txt_confirm_pass.Text);
        cmd.Parameters.AddWithValue("@country", txt_country.Text);
        cmd.Parameters.AddWithValue("@city", txt_city.Text);

        DataSet ds = new DataSet();
        da.Fill(ds); //exception ocuured here
        cmd.ExecuteNonQuery();
        con.Close();
    }   
}

faisal23

проверьте строку подключения, имя базы данных, имя хранимой процедуры

Member 9579525

Спасибо тебе...

Member 9579525

будет ли это давать ошибку, если я не буду писать имя схемы перед именем процедуры? и вставить в запрос?
е.г
создайте процедуру [имя схемы].[имя процедуры]
как
вставить в [имя схемы][имя таблицы] значения()

fjdiewornncalwe

Если схема не задана, то dbo по умолчанию проверяется.

Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)

Пожалуйста, задайте вопрос правильно.

Из ошибки любой может сказать, что в базе данных нет хранимой процедуры, которую вы пытаетесь выполнить.

Спасибо...

Member 9579525

Спасибо вам...но я задаю вопрос, значит, должна быть хранимая процедура..

Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)

Итак, дайте нам еще немного информации.
Где вы столкнулись с этой проблемой, я имею в виду, где в коде вы нашли это исключение ?
Разместите несколько кодов.

Спасибо...

Member 9579525

ОК...предоставление исключения в строке "da.Fill(ds)" после отправки формы...

Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)

Можете ли вы разместить все коды на этой странице ? Будет легче найти проблему.

jim lahey

Не размещайте свои вопросы здесь, нажмите на кнопку "улучшить вопрос" и поместите туда свои поправки, иначе они будут пропущены.

Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)

Вы открыли соединение ?
Я не могу найти никаких кодов для этого...

Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)

Теперь я должен попробовать ваш код и вернуться к вам.
Еще раз спасибо за всю информацию.
Я вернусь после того, как попробую это сделать.

faisal23

братан, вы берете дату рождения в datetime в datetime fromat и передаете параметр в строку, возможно, это ошибка.

5 Ответов

Рейтинг:
2

AshishChaudha

Вы сделали это

DataSet ds = new DataSet();
        da.Fill(ds);  
        cmd.ExecuteNonQuery();
        con.Close();

Try this (Without inserting data what you are trying to fill in dataset)

cmd.ExecuteNonQuery();
DataSet ds = new DataSet();
da.Fill(ds);  
con.Close();


Рейтинг:
2

ganesh pate

Привет,
Если у вас есть такая же проблема,

Could not find stored procedure error
.

Пожалуйста, проверьте "ConnectionString". Который вы предоставили в Web.config.

Проверьте имя строки подключения, имя базы данных, имя сервера.




Спасибо и с уважением
Ганеш Паштет


Richard Deeming

Ваш ответ дублирует самый первый комментарий, опубликованный к этому вопросу - почти ЧЕТЫРЕ ГОДА НАЗАД!

Рейтинг:
2

davekahn

Проблема может заключаться в том, что вы используете

cmd.CommandType = CommandType.StoredProcedure;

Если вы используете этот тип, то SqlCommand не ожидает ничего в поле CommandText, кроме имени хранимой процедуры. Никакие параметры не допускаются. Так что вам нужно использовать:

cmd.CommandType = CommandType.Text;

тогда команда должна быть примерно такой

cmd.CommandText = "EXEC dbo.sp_procedurename @param1, @param2,..."


CHill60

- Никакие параметры не допускаются. Я не думаю, что ты прямо там.

Richard Deeming

Нет, это верно. Если для типа команды задано значение "хранимая процедура", то текст команды не может содержать ничего, кроме имени хранимой процедуры.

Конечно, вы все еще можете передать параметры хранимой процедуре. Вы просто не можете включить их в текст команды.

Перечисление Типов Команд | Microsoft Docs[^]
"Если свойству CommandType присвоено значение StoredProcedure, то свойству CommandText следует присвоить имя хранимой процедуры, к которой будет осуществляться доступ."

Richard Deeming

Конечно, это не меняет того факта, что код в вопросе не добавляет никаких параметров к тексту команды. Так что этот ответ все равно неверен. :)

CHill60

Именно это я и имел в виду. Ответ может быть неверно истолкован как "вы не можете передать параметры в хранимую процедуру", тем более что ОП так хорошо использовал параметры (необычно здесь, даже если это было 7 лет назад :-) ). Наличие его в виде текста, как в решении, почти поощряет конкатенацию строк :вздох:.

По иронии судьбы, решение 3 было отклонено, и все же это было единственное решение, которое заметило, что OP вообще не установил CommandText (он был закомментирован)

Richard Deeming

Я не согласен с вашим комментарием по поводу решения 3: ОП уже передал текст команды оператору. SqlCommand конструктор. Нет никакой необходимости устанавливать его снова. :)

CHill60

Пропустил это - #ShouldGoToSpecSavers :facepalm:

Рейтинг:
1

StackQ

SqlCommand cmd = new SqlCommand("[dbo].[HDR_PROFILE_proc]", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText="ur stored procedure name"; //add this
SqlDataAdapter da = new SqlDataAdapter(cmd);


Рейтинг:
1

MT_

Я думаю, что вам не нужно указывать [dbo]. при вызове хранимой процедуры схемы DBO.
вы можете использовать любой из них

SqlCommand cmd = new SqlCommand("dbo.HDR_PROFILE_proc", con);

или
SqlCommand cmd = new SqlCommand("HDR_PROFILE_proc", con);


Надеюсь, это поможет
Милинд