Ошибка преобразования в тип varchar значение в int
Привет Существует преобразования ошибка "ошибка преобразования в тип varchar значение в int"
Примечание: столбец Age(txtAge) является целочисленным.
Что я уже пробовал:
<pre>public void Bind_ddlState() { SqlCommand cmd = new SqlCommand("SELECT [StateID] ,[StateName] FROM [StateDetails] where [StateID]='" + DDlCountry.SelectedValue + "'", cn); SqlDataAdapter sda = new SqlDataAdapter(cmd); DataTable dt = new DataTable(); sda.Fill(dt); Ddlstate.DataSource = dt; Ddlstate.DataTextField = "StateName"; Ddlstate.DataValueField = "StateID"; Ddlstate.DataBind(); cn.Close(); } protected void Button1_Click1(object sender, EventArgs e) { { cn.Open(); SqlCommand cmd = new SqlCommand("INSERT INTO [RegisDetails] (Name, Department,Salry,DOJ,DOB, Age,Country,Stat,Phone,Email,Pincode) VALUES ('" + txtname.Text + "','" + txtDept.Text + "','" + txtSalary.Text + "','" + txtDoj.Text + "','" + txtDob.Text + "','" + txtAge.Text + "','" + DDlCountry.Text + "','" + Ddlstate.Text + "','" + txtPhone.Text + "','" + TxtEmail.Text + "','" + txtPin.Text + "' )", cn); cmd.ExecuteNonQuery(); cn.Close(); } } protected void Button2_Click1(object sender, EventArgs e) { this.ClearCachedClientID(); } protected void DDlCountry_SelectedIndexChanged(object sender, EventArgs e) { Bind_ddlState(); } protected void txtDate1_TextChanged(object sender, EventArgs e) { } protected void txtDate2_TextChanged(object sender, EventArgs e) { } protected void txtAge_TextChanged(object sender, EventArgs e) { DateTime dateOfBirth = new DateTime(); int currentYear, currentMonth, birthMonth, birthYear, years, months; dateOfBirth = Convert.ToDateTime(txtAge.Text); currentYear = Convert.ToInt32(DateTime.Now.Year); currentMonth = Convert.ToInt32(DateTime.Now.Month); birthYear = Convert.ToInt32(dateOfBirth.Year); birthMonth = Convert.ToInt32(dateOfBirth.Month); years = currentYear - birthYear; if ((currentMonth - birthMonth > 0)) { months = Convert.ToInt32(currentMonth - birthMonth); } else { years = years - 1; months = Convert.ToInt32((12 - birthMonth) + currentMonth); } txtAge.Text = years.ToString() + "/" + months.ToString(); }
F-ES Sitecore
Что такое "год"? "месяцы"? Ошибка говорит вам, что вы пытаетесь преобразовать varchar (строку в базе данных) в int, поэтому, если это поле содержит "hello", то преобразование в int завершится неудачей. Я также не вижу SQL в вашем вопросе, я не уверен, что вы публикуете соответствующий бит кода.
Jon McKee
Точно мои мысли. Похоже, что возраст может храниться в виде строки "ММ/ДД/гггг".
Member 12605293
Привет, Джон, взгляни на мой код. Есть ли необходимость в int. Parse/int. TryParse??
F-ES Sitecore
На какой линии вы получаете ошибку? Я вижу, что это может произойти, когда вы выполняете вставку. Однако мы не знаем, каковы ваши типы полей, что такое int, что такое varchar или что-то еще. Как я уже сказал, Вы пытаетесь преобразовать строку в int где-то, мы не можем получить доступ к вашей базе данных или вашим данным, поэтому вам просто нужно отследить, где происходит это преобразование.
Member 12605293
Имя варчар (50) Проверен
Отдел варчар(50) Проверен
Salry int проверено
DOJ datetime проверено
Доб датавремя проверено
Возраст int проверен
Страна варчар(30) Проверен
Стат варчар (30) Проверен
Телефон int проверен
Электронная почта varchar(50) Проверен
Пинкод инт проверено
Непроверенный
F-ES Sitecore
Ваше поле "возраст" - это int, но вы вставляете значение txtAge в кавычки. Во-первых, кавычки означают, что значение является строкой, во-вторых, значение txtAge-это что-то вроде "20\5". Как это перевести в int?
Вам просто нужно убедиться, что значения, входящие в поля, верны, и использование параметризованных запросов поможет вам в этом, но вам также нужно точно решить, что будет храниться в Age и как убедиться, что значение попадет туда.
Member 12605293
Да точно такая же строка "я вижу, что это возможно происходит, когда вы выполняете вставку"
Jon McKee
Если вы имеете в виду Convert.ToInt32
методы, то не. значение datetime хранит инвидивуальный год/месяц/день в виде int
.
Боковое Примечание: существует небольшая разница между Convert.ToInt32
и Int32.Parse
. Convert
возвращает 0 вместо того, чтобы создавать исключение для недопустимого аргумента.
Afzaal Ahmad Zeeshan
Это действительный номер варчара? Убедитесь, что там нет никаких дополнительных символов, таких как специальные символы.
Member 12605293
Привет Afzaal
Какой варчар???
Afzaal Ahmad Zeeshan
Тип столбца.
Member 12605293
Да это действительно так