Хранимая процедура для CRUD, имя proc не найдено, когда я вызываю код позади
Привет , я новичок в sql, я хочу связать свою таблицу в одном SP и сделать вызов в проекте.
Что я уже пробовал:
Create PROCEDURE [gvempdetails] @Action VARCHAR (10), @EMPLOYEEID INT , @EMPLOYEENAME VARCHAR(100)= NULL , @DEPARTMENT VARCHAR(100)= NULL , @AGE VARCHAR(30)= NULL, @SALARY INT = NULL AS BEGIN SET NOCOUNT ON IF @Action = 'SELECT' BEGIN SELECT EmpId,EmpName,Dep,Age,Sal FROM gvdetails17 END IF @Action='INSERT' BEGIN INSERT INTO gvdetails17(EmpId,EmpName,Dep,Age,Sal) VALUES(@EMPLOYEEID,@EMPLOYEENAME,@DEPARTMENT,@AGE,@SALARY) END IF @Action ='UPDATE' BEGIN UPDATE gvdetails17 SET EmpName=@EMPLOYEENAME,Dep=@DEPARTMENT,Age=@AGE,Sal=@SALARY WHERE EmpId=@EMPLOYEEID END IF @Action='DELETE' BEGIN DELETE FROM gvdetails17 where EmpId=@EMPLOYEEID END SET NOCOUNT OFF END <pre lang="c#"><pre>SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["sqlconnection"].ConnectionString); protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { bind(); BindAge(); BindSalary(); } } protected void bind() { cn.Open(); SqlCommand cmd = new SqlCommand("Select * from [gvempdetails]", cn); SqlDataAdapter da = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds); cn.Close(); if (ds.Tables[0].Rows.Count > 0) { gvDetails.DataSource = ds; gvDetails.DataBind(); } else { ds.Tables[0].Rows.Add(ds.Tables[0].NewRow()); gvDetails.DataSource = ds; gvDetails.DataBind(); int columncount = gvDetails.Rows[0].Cells.Count; gvDetails.Rows[0].Cells.Clear(); gvDetails.Rows[0].Cells.Add(new TableCell()); gvDetails.Rows[0].Cells[0].ColumnSpan = columncount; gvDetails.Rows[0].Cells[0].Text = "Enter the details"; } } protected void ddlAge_SelectedIndexChanged(object sender, EventArgs e) { DataTable dt = new DataTable(); cn.Open(); if (ddlAge.SelectedValue != "") { string[] ages = ddlAge.SelectedValue.Split('-'); string from = ages[0]; string to = ages[1]; SqlCommand cmd = new SqlCommand("select * from [gvempdetails] WHERE @AGE between @from and @to", cn); cmd.Parameters.AddWithValue("@from", from); cmd.Parameters.AddWithValue("@to", to); SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(dt); } else { SqlCommand cmd = new SqlCommand("select * from [gvempdetails]", cn); SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(dt); } cn.Close(); gvDetails.DataSource = dt; gvDetails.DataBind(); } protected void gvDetails_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName.Equals("Add")) { TextBox txtEmpId = (TextBox)gvDetails.FooterRow.FindControl("txtempid"); TextBox txtEmpName = (TextBox)gvDetails.FooterRow.FindControl("txtempname1"); TextBox txtEmpDep = (TextBox)gvDetails.FooterRow.FindControl("txtdep1"); TextBox txtAge = (TextBox)gvDetails.FooterRow.FindControl("txtage1"); TextBox txtSal = (TextBox)gvDetails.FooterRow.FindControl("txtsal1"); cn.Open(); SqlCommand cmd = new SqlCommand( "Insert into [gvempdetails](@EMPLOYEEID,@EMPLOYEENAME,@DEPARTMENT,@AGE,@SALARY) values('" + txtEmpId.Text + "','" + txtEmpName.Text + "','" + txtEmpDep.Text + "','" + txtAge.Text + "','" + txtSal.Text + "')", cn); int result = cmd.ExecuteNonQuery(); cn.Close(); if (result == 1) { bind(); } else { } } } protected void gvDetails_RowDeleting(object sender, GridViewDeleteEventArgs e) { int EmpId = Convert.ToInt32(gvDetails.DataKeys[e.RowIndex].Values["EmpId"].ToString()); string username = gvDetails.DataKeys[e.RowIndex].Values["EmpName"].ToString(); cn.Open(); SqlCommand cmd = new SqlCommand("Delete from [gvempdetails] where @EMPLOYEEID=" + EmpId, cn); int result = cmd.ExecuteNonQuery(); cn.Close(); if (result == 1) { bind(); //lblresult.Text = username + " details deleted successfully"; } } protected void gvDetails_RowUpdating(object sender, GridViewUpdateEventArgs e) { int EmpId = Convert.ToInt32(gvDetails.DataKeys[e.RowIndex].Value.ToString()); string username = gvDetails.DataKeys[e.RowIndex].Values["EmpName"].ToString(); TextBox txtDep = (TextBox)gvDetails.Rows[e.RowIndex].FindControl("txtdep"); TextBox txtAge = (TextBox)gvDetails.Rows[e.RowIndex].FindControl("txtage"); TextBox txtSal = (TextBox)gvDetails.Rows[e.RowIndex].FindControl("txtsal"); cn.Open(); SqlCommand cmd = new SqlCommand("Update [gvempdetails] set @DEPARTMENT='" + txtDep.Text + "',@AGE='" + txtAge.Text + "',@SALARY='" + txtSal.Text + "' where @EMPLOYEEID=" + EmpId, cn); cmd.ExecuteNonQuery(); cn.Close(); // lblresult.Text = username + " Details Updated successfully"; gvDetails.EditIndex = -1; bind(); } protected void gvDetails_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { gvDetails.EditIndex = -1; bind(); } protected void gvDetails_RowEditing(object sender, GridViewEditEventArgs e) { gvDetails.EditIndex = e.NewEditIndex; bind(); } protected void gvDetails_OnRowDataBound(object sender, GridViewRowEventArgs e) { } protected void BindAge() { DataTable dt = new DataTable(); cn.Open(); SqlCommand cmd = new SqlCommand("Select * from Age", cn); SqlDataAdapter da = new SqlDataAdapter(cmd); //DataSet ds = new DataSet(); da.Fill(dt); cn.Close(); ddlAge.DataSource = dt; ddlAge.DataTextField = "Age"; ddlAge.DataValueField = "Age"; ddlAge.DataBind(); ddlAge.Items.Insert(0, new ListItem("--Select--")); } protected void BindSalary() { DataTable dt = new DataTable(); cn.Open(); SqlCommand cmd = new SqlCommand("Select * from Salary1", cn); SqlDataAdapter da = new SqlDataAdapter(cmd); //DataSet ds = new DataSet(); da.Fill(dt); cn.Close(); ddlAddSalary1.DataSource = dt; ddlAddSalary1.DataTextField = "Salary"; ddlAddSalary1.DataValueField = "Salary"; ddlAddSalary1.DataBind(); ddlAddSalary1.Items.Insert(0, new ListItem("--Select--")); } protected void ddlAddSalary1_SelectedIndexChanged1(object sender, EventArgs e) { DataTable dt = new DataTable(); cn.Open(); if (ddlAddSalary1.SelectedValue != "") { string[] sal = ddlAddSalary1.SelectedValue.Split('-'); string from = sal[0]; string to = sal[1]; SqlCommand cmd = new SqlCommand("Select * from [gvempdetails] WHERE @SALARY between @from and @to", cn); cmd.Parameters.AddWithValue("@from", from); cmd.Parameters.AddWithValue("@to", to); SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(dt); } else { SqlCommand cmd = new SqlCommand("select * from [gvempdetails]", cn); SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(dt); } cn.Close(); gvDetails.DataSource = dt; gvDetails.DataBind(); } protected void OnSelectedIndexChanged(object sender, EventArgs e) { //txtEmpId.Text = gvDetails.SelectedRow.Cells[0].Text; //lblempname.Text = gvDetails.SelectedRow.Cells[1].Text; //lbldep.Text = gvDetails.SelectedRow.Cells[2].Text; //lblage.Text = gvDetails.SelectedRow.Cells[3].Text; //lblsal.Text = gvDetails.SelectedRow.Cells[4].Text; } protected void OnPaging(object sender, GridViewPageEventArgs e) { gvDetails.PageIndex = e.NewPageIndex; this.bind(); } } }
Er. Puneet Goel
В чем именно заключается проблема? Вы хотите знать, как вызвать SP в проекте?
Member 12605293
Привет Пунит,
Спасибо за Ваш быстрый ответ,я хочу знать, как обернуть все эти таблицы в один SP
Er. Puneet Goel
хорошо, Я помогу Вам, Можете ли вы сказать, какие 3 sql-запроса вы хотите преобразовать в proc и использовать его ? В программировании есть несколько запросов с DML-операции.
Member 12605293
Привет Пунит
Вот что я попробовал
Создать процедуру [gvempdetails]
@Action VARCHAR (10),
@EMPLOYEEID INT ,
@EMPLOYEENAME VARCHAR(100)= NULL ,
@DEPARTMENT VARCHAR(100)= NULL ,
@AGE VARCHAR(30)= NULL,
@ЗАРАБОТНОЙ ПЛАТЫ ИНТ = НУЛЬ
АС
НАЧАТЬ
УСТАНОВИТЕ NOCOUNT ON
Если @Action = 'SELECT'
НАЧАТЬ
Выберите empid в,столбец empname,ДЭП,возраст,Сал
От gvdetails17
КОНЕЦ
IF @Action= 'INSERT'
НАЧАТЬ
Вставить в gvdetails17(empid в,столбец empname,ДЭП,возраст,Сал) значения(@КОДСОТРУДНИКА,@EMPLOYEENAME, отдел@,@возраст,@заработной платы)
КОНЕЦ
Если обновление @действии =''
НАЧАТЬ
Gvdetails17 обновление установить столбец empname=@EMPLOYEENAME,кафедра отд=@, лет=@возраст,Сэл=@зарплата где empid в=@employeeid не
КОНЕЦ
Если @Action= 'удалить'
НАЧАТЬ
Удалить из gvdetails17, где EmpId=@EMPLOYEEID
КОНЕЦ
УСТАНОВИТЬ NOCOUNT OFF
КОНЕЦ
Er. Puneet Goel
Работает ли sp нормально, когда вы его выполняете ?
Er. Puneet Goel
Проблема заключается в том, что "SqlCommand cmd = new SqlCommand ("Select * from [gvempdetails]", cn);"
Вы не называете процедуру таким образом.
Member 12605293
хорошо, я исправил это, но теперь эта процедура или функция ожидает paramenter, который iis не поставляется.Я знаю, что использовал paramenter (@Action) для вставки,обновления, удаления.Но я не знаю, как передать этот входной параметр
Member 12605293
охраняемых недействительными привязать()
{
спицы.Открыть();
SqlCommand cmd = new SqlCommand ("gvempdetails", cn);
УМК.CommandType = CommandType.Хранимая процедура;
SqlDataAdapter da = новый SqlDataAdapter(cmd);
DataSet ds = новый набор данных();
да.Заполнить(ДС);
спицы.Рядом();
если (ДС.Таблицы[0].Строк.Граф > 0)
{
gvDetails.Источник данных = ds;
gvDetails.Привязку();
}
ещё
{
ДС.Таблицы[0].Строк.Добавить(ДС.Таблицы[0]. NewRow());
gvDetails.Источник данных = ds;
gvDetails.Привязку();
инт свойств = gvDetails.Строки[0].Ячейки.Рассчитывать;
gvDetails.Строки[0].Ячейки.Четкий();
gvDetails.Строки[0].Ячейки.Добавить (новая табличная ячейка());
gvDetails.Строки[0].Ячейки[0].Columnspan значение = свойств;
gvDetails.Строки[0].Ячейки[0].Text = " введите данные";
}
}
охраняемых недействительными ddlAge_SelectedIndexChanged(объект отправителя, EventArgs в электронной)
{
DataTable dt = новый DataTable();
спицы.Открыть();
если (ddlAge.SelectedValue != "")
{
string[] ages = ddlAge.Выбранное значение.Расщеплять('-');
строка from = ages[0];
строка = возраст[1];
Команда sqlcommand cmd и = новая команда sqlcommand("выбрать * из [gvempdetails], где @возраст между @и @к", СП);
УМК.CommandType = CommandType.Хранимая процедура;
УМК.Параметры.AddWithValue("@С", от);
УМК.Параметры.AddWithValue ("@to", to);
SqlDataAdapter da = новый SqlDataAdapter(cmd);
да.Заполнить(ДТ);
}
ещё
{
SqlCommand cmd = new SqlCommand ("select * from [gvempdetails]", cn);
УМК.CommandType = CommandType.Хранимая процедура;
SqlDataAdapter da = новый SqlDataAdapter(cmd);
да.Заполнить(ДТ);
}
спицы.Рядом();
gvDetails.Источник данных = dt;
gvDetails.Привязку();
}
охраняемых недействительными gvDetails_RowCommand(объект отправителя, GridViewCommandEventArgs е)
{
если (электронная.Имя_команды."Равно" ("Добавить"))
{
TextBox txtEmpId = (TextBox)gvDetails.FooterRow.FindControl ("txtempid");
TextBox txtEmpName = (TextBox)gvDetails.FooterRow.FindControl ("txtempname1");
TextBox txtEmpDep = (TextBox)gvDetails.FooterRow.FindControl ("txtdep1");
TextBox txtAge = (TextBox)gvDetails.FooterRow.FindControl ("txtage1");
TextBox txtSal = (TextBox)gvDetails.FooterRow. FindControl ("txtsal1");
спицы.Открыть();
SqlCommand cmd =
новая команда SqlCommand(
"Вставить в [gvempdetails](@EMPLOYEEID,@EMPLOYEENAME,@DEPARTMENT,@AGE,@SALARY) значения('" + txtEmpId.Текст + "', '" + txtEmpName.Текст + "','" +
txtEmpDep.Текст + "', '" + txtAge.Текст + "', '" + txtSal.Текст + "')", cn);
УМК.CommandType = CommandType.Хранимая процедура;
int result = cmd.Метод executenonquery();
спицы.Рядом();
если (результат == 1)
{
связывать();
}
ещё
{
}
}
}
охраняемых недействительными gvDetails_RowDeleting(объект отправителя, GridViewDeleteEventArgs е)
{
int EmpId = преобразовать.ToInt32(gvDetails.DataKeys[e.Параметр rowindex].Значения["Empid В"].Метод toString());
строка username = gvDetails.DataKeys[e.Параметр rowindex].Значения["Столбец Empname"].Метод toString();
спицы.Открыть();
Команда sqlcommand cmd и = новая команда sqlcommand("удалить с [gvempdetails], где @КОДСОТРУДНИКА=" + empid в, спицы);
int result = cmd.Метод executenonquery();
спицы.Рядом();
если (результат == 1)
Er. Puneet Goel
посмотрите на него ?? http://net-informations.com/csprj/data-providers/cs-procedure-parameter.htm
Karthik_Mahalingam
публикуйте только соответствующий код..
Member 12605293
Привет Картик
Я обновил вопрос.