Richa Gupta Ответов: 3

Ошибка: входная строка находится не в правильном формате.


Я отправляю значения текстового поля в качестве параметров в хранимую процедуру, которая соответствует типам полей varchar, datetime, int в базе данных. Я преобразовал их все в соответствующие типы. Некоторые текстовые поля пусты, я имею в виду, что при отправке параметров передаются нулевые значения. Но я уже сделал это в поле Allow nulls и упомянул то же самое в хранимой процедуре в имени значений по умолчанию. Что же мне делать?


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

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

Я использовал textbox.text.toString () и перепроверил все параметры.

[no name]

Когда вы просите помощи по вашему коду, обычно полезно показать нам ваш код. null в C# - это не то же самое, что значение null в вашей базе данных.
"Я использовал textbox. text.toString ()", угу ... во-первых, эта строка кода не будет компилироваться, и как вы думаете, какая польза будет от вызова ToString для свойства, которое уже является строкой?

Richa Gupta

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

Richa Gupta

хорошо, сэр, я понял вашу точку зрения, но каково же решение этой проблемы сейчас? Я знаю, что это похоже на попытку преобразовать пробел в строку.Как же тогда я могу отправить нулевое значение в базу данных?

3 Ответов

Рейтинг:
1

OriginalGriff

Прежде чем начать разговор с SQL, используйте различные методы TryParse для преобразования входных данных пользовательского текстового поля в собственные типы данных (например, int, float, DateTime) и сообщайте о любых проблемах пользователю.
Как только у вас есть "хорошие" собственные версии, используйте параметризованный запрос для передачи собственных типов в SQL - преобразование null в DbNull.Значение, в котором как столбцы базы данных, так и определение параметров SP допускают нулевые значения.


Richa Gupta

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

Рейтинг:
0

Richa Gupta

Да, вот моя хранимая процедура:

ALTER PROCEDURE [dbo].[sp_CRUDempDetail]
@empcode int,
@gender nchar(10)=null,
@dob date=null,
@fhname varchar(50)=null,
@Nationality varchar(50)=null,
@marital varchar(30)=null,
@bgroup nchar(10)=null,
@email varchar(50)=null,
@mobno varchar(50)=null,
@altmobno varchar(50)=null,
@corr_add varchar(150)=null,
@corr_city varchar(80)=null,
@corr_state varchar(80)=null,
@corr_pin_code int=null,
@corr_country varchar(80)=null,
@pmt_add varchar(150)=null,
@pmt_city varchar(80)=null,
@pmt_state varchar(80)=null,
@pmt_pin_code int=0,
@pmt_country varchar(80)=null,
@status varchar(50)=null
AS
BEGIN
SET NOCOUNT ON;
--- Insert details of Employee
IF @status='InsertEmpDetails'
BEGIN
UPDATE tblEmployee SET Gender=@gender,DOB=@dob,Father_Husband_Name=@fhname,Nationality=@Nationality,
Marital_Status=@marital,Blood_Group=@bgroup,Email=@email,Mob_No=@mobno,Alt_Mob_No=@altmobno,Corr_Address=@corr_add,
Corr_City=@corr_city,Corr_Country=@corr_country,Corr_PinCode=@corr_pin_code,Corr_State=@corr_state,Pmt_Address=@pmt_add,
Pmt_City=@pmt_city,Pmt_Country=@pmt_country,Pmt_PinCode=@pmt_pin_code,Pmt_State=@pmt_state
WHERE Emp_Code=@empcode
END

--- Select Records in Table
IF @status='SELECT'
BEGIN
SELECT * FROM tblEmployee
END
End



а вот и мой код c# :


protected void btnSave_Click(object sender, EventArgs e)
    {
        using (DataClassesDataContext ctx = new DataClassesDataContext())
        {
            var result = ctx.sp_CRUDempDetail(Convert.ToInt32(lblemp_code.InnerText),rdlGender.SelectedValue,Convert.ToDateTime(txtDOB.Text),txtFHname.Text.ToString(),txtNation.Text.ToString(),rdlmarital.SelectedValue,txtBloodGroup.Text.ToString(),txtemail.Text.ToString(),txtmob.Text.ToString(),txtMob2.Text.ToString(),txtcorAdd1.Text.ToString(),txtcorCity.Text.ToString(),txtcorState.Text.ToString(), Convert.ToInt32(txtcorpin.Text),txtcorcountry.Text.ToString(), txtPmtAdd1.Text.ToString(), txtPmtCity.Text.ToString(), txtPmtState.Text.ToString(), Convert.ToInt32(txtPmtpin.Text), txtPmtcountry.Text.ToString(), "InsertFamilyDetails");
            Message("Saved Successfully!");
            Clear();
        }
    }


Рейтинг:
0

Alex Banu

можете ли вы поместить код sql и код вызова C#.
о нулевых значениях если вы не отправляете null из C#, просто выполните поиск по DBNull.