Member 12533200 Ответов: 2

Как вставить записи с помощью хранимой процедуры из ASP.NET C# в SQL server


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

Что я уже пробовал:

Моя процедура такова:

Изменить процедуру [dbo].[supsp]
(@Supplier_Id [nvarchar] (50),@Supplier_Company_Name [nvarchar] (max),@Supplier_Rep_Name [nvarchar](50),
Адрес @[Тип nvarchar](Макс),@государству [тип nvarchar](50),@Город [тип nvarchar](50),@пинкод инт@Contact_No инт,
@Email_Id [тип nvarchar](Макс),@лицензия [тип nvarchar](Макс),@фото [тип nvarchar](Макс),@Ac_Holder_Name [тип nvarchar](50),@Ac_Number инт,
@Ac_Type [тип nvarchar](50),@Bank_Name [тип nvarchar](50),@Branch_Code инт@Branch_Location [тип nvarchar](50),@Ifsc_Code [тип nvarchar](50),
@Supplier_Joining_Date date,@Supplier_History [nvarchar](50))
как
начать
вставить в поставщика values(@Supplier_Id,@Supplier_Company_Name,@Supplier_Rep_Name,@Address,@State,@City,@Pincode,@Contact_No,@Email_Id,@License,@Photo,@Ac_Holder_Name,@Ac_Number,@Ac_Type,@Bank_Name,@Branch_Code,@Branch_Location,@Ifsc_Code,@Supplier_Joining_Date,@Supplier_History)
конец


Мой код C# является:

охраняемых недействительными обработчика button1_click(объект отправителя, EventArgs в электронной)
{
Объект sqlconnection кон = новое sqlconnection("источник данных=AERONIC_002-ПК\\именем sqlexpress;начальный каталог=смеркут;Комплексная безопасность=истина");

строка st = сервер.MapPath ("файлы поставщиков/");
если (licenseupld.HasFile)
{
пробовать
{

licenseupld.Сохранить как(ст + licenseupld.имя файла);
фотоплан.SaveAs(st + photoupld.имя файла);
строка d1 = "~ / Supplier Files/ " + licenseupld.имя файла;
строка d2 = "~ / Supplier Files/ " + photoupld.имя файла;
// Sqlcommand, который команду cmd = новая команда sqlcommand("вставить в поставщика значения('" + Сид.Текст + "', '" + scn.Текст + "', '" + srn.Текст + "', '" + addr.Текст + "', '" + ddlsta.Элемент.Значение+ "', '" + ddlcit.Элемент.Значение + "','" + pncd.Текст.Метод toString() + "','" + scno.Текст.ToString ()+ "', '" + email.Текст+"', '" + d1 +"', '" + d2+"', '" + achn.Текст + "','" + acno.Текст.ToString ()+"', '" + ddlactype.Элемент.Значение + "', '" + notb.Текст + "','" + БК.Текст.ToString ()+"', '" + bl.Текст + "', '" + ifsc.Текст + "', '" + sjd.Текст + "','" + ш.Текст + "')", кон);
//УМК.Свойство Commandtype = Значение Commandtype.Текст;
SqlCommand cmd = new SqlCommand ("supsp", con);
УМК.CommandType = CommandType.Хранимая процедура;
УМК.Параметры.AddWithValue ("@Supplier_Id", sid.Текст);
УМК.Параметры.AddWithValue ("@Supplier_Company_Name", scn. Text);
УМК.Параметры.AddWithValue ("@Supplier_Rep_Name", srn. Text);
УМК.Параметры.AddWithValue ("@Address", addr. Text);
УМК.Параметры.AddWithValue ("@State", ddlsta. Text);
УМК.Параметры.AddWithValue ("@City", ddlcit. Text);
УМК.Параметры.AddWithValue ("@Pincode", pncd.Text.Метод toString());
УМК.Параметры.AddWithValue ("@Contact_No", scno.Text.Метод toString());
УМК.Параметры.AddWithValue ("@Email_Id", email. Text);
УМК.Параметры.AddWithValue ("@License", d1);
УМК.Параметры.AddWithValue ("@Photo", d2);
УМК.Параметры.AddWithValue ("@Ac_Holder_Name", achn. Text);
УМК.Параметры.AddWithValue ("@Ac_Number", acno.Text.Метод toString());
УМК.Параметры.AddWithValue("@Ac_Type", ddlactype. Text);
УМК.Параметры.AddWithValue ("@Bank_Name", notb. Text);
УМК.Параметры.AddWithValue ("@Branch_Code", bc.Text.Метод toString());
УМК.Параметры.AddWithValue ("@Branch_Location", bl. Text);
УМК.Параметры.AddWithValue ("@Ifsc_Code", ifsc. Text);
УМК.Параметры.AddWithValue ("@Supplier_Joining_Date", sjd.Text.Метод toString());
УМК.Параметры.AddWithValue ("@Supplier_History", sh. Text);
против.Открыть();
УМК.Метод executenonquery();
Элемента управления scriptmanager.RegisterStartupScript(это, это.GetType (),"alert", " alert('Register Successfully');окно.location = 'Supplier. aspx';", true);

// Label21.Видимое = истинное;
// Label21.Текст = "Успешно Выведен ";
против.Закрывать();
// loadstores();
genarateautoid();
clearvalues();
// Страница.Ответ.Перенаправление ("Product. aspx");

}

поймать (исключение бывший)
{
бросок экс;

// StatusLabel.Text = " статус загрузки: файл не может быть загружен. Произошла следующая ошибка: "+ ex.Message;
}
}

}

ZurdoDev

Почему вы не можете вставить?

2 Ответов

Рейтинг:
0

OriginalGriff

hy вы настраиваете параметры, если ваш код даже не использует их?
Этот код имеет много проблем:
1) он широко открыт для SQLInjection: не объединяйте строки для построения SQL-команды. Это оставляет вас широко открытыми для случайной или преднамеренной атаки SQL-инъекции, которая может уничтожить всю вашу базу данных. Вместо этого используйте параметризованные запросы.
2) вы предоставляете кучу параметров, но не используете их в операторе INSERT.
3) Вы написали хранимую процедуру, но не пытаетесь ее использовать.
4) Ни одна из ваших вставок не является особенно безопасной в любом случае - всегда перечисляйте столбцы, которые вы хотите вставить в оператор INSERT, - таким образом, любое изменение порядка параметров или определения столбца не нарушает ваш код.
Так что всегда используйте

INSERT INTO MyTable (ColumnName1, ColumnName2) VALUES @ParForCol1, @ParForCol2

И позвонить в ИП:
using (SqlCommand cmd = new SqlCommand("MyStoredProcedure", con))
    {
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.AddWithValue("@Name", tbTextBoxWithNameIn.Text);
    cmd.ExecuteNonQuery();
    }


Рейтинг:
0

riyasrifa

Некоторые из ваших fied являются целочисленными в вашей процедуре. Но переданные значения являются строковыми.
Например : pincode in INT и вы проходите

УМК.Параметры.AddWithValue ("@Pincode", pncd.Text.Метод toString());

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

Я вставляю пример кода, который сделает ваши коды простыми :


процедура sql:

создать процедуру insert_data (@val1 varchar(50),@val2 varchar(50),@val3 varchar(50))
как
вставить в myTable(col1,col2,col3)значения (@val1,@val2,@val3)


общие параметры класс
{
публичная строка val1={get;set;}
публичная строка val2={get;set;}
публичная строка val3={get;set;}
}

общественного недействительными YourMethodOrEvent()
{
параметров параметр=новые параметры();
парам.val1=txt1.Текст;
парам.val2=txt2.Текст;
парам.val3=txt3.Текст;
InsertData(param);
}

общественного недействительными InsertData(параметры парам)
{
соединение();
SqlCommand cmd = new SqlCommand ("sp_insert_data", con);
УМК.CommandType = CommandType.Хранимая процедура;
УМК.Параметры.Добавить("@val1", парам.val1);
УМК.Параметры.Добавить("@val2", парам.val2);
УМК.Параметры.Добавить("@val3", парам.val3);
УМК.Метод executenonquery();
}