2016-05-06 8 views
0

Я хочу сохранить Общее значение Text Box, который является суммой двух поля в DataTable, но он дает мне ошибку неверного формата после сохранения данныхПреобразовать TextBox в целое и хранить в DataTable

private void button1_Click(object sender, EventArgs e) 
{ 
    nn.Open(); 
    SqlCeCommand cmd = new SqlCeCommand("INSERT INTO name (id,name,price,cost,total,Date) VALUES('" + idTextBox.Text + "', '" + nameTextBox.Text + "', '" + priceTextBox.Text + "', '" + costTextBox.Text + "','" + totalTextBox.Text + "', '" + dateDateTimePicker.Value.ToString("dd/MMMM/yy") + "')", nn); 
    cmd.ExecuteNonQuery(); 
    nn.Close(); 

// Общий расчет Text Box

private void button1_Click(object sender, EventArgs e)  
totalTextBox.Text = (Convert.ToInt32(priceTextBox.Text) + Convert.ToInt32(costTextBox.Text)).ToString(); 
+0

Чтобы избежать ошибок, вы всегда должны использовать параметры при хранении значений в базе данных. Когда вы не используете параметр, драйвер должен угадать тип данных, поскольку SQL является строкой, а база данных использует целые числа и числа для некоторых полей. – jdweng

+0

Подход, который вы принимаете, крайне опасен. Он подлежит внедрению SQL, и кто-то с небольшим хакерским умением может уничтожить вашу базу данных из вашего приложения. – zmechanic

ответ

-1

во-первых, следует избегать непосредственно положить TextBox.Text значения в INSERT заявлении. Он может быть использован для SQL-инъекций (см SQLParameter класса)

С

int intValue = 0; 
bool correct = int.TryParse(TextBox.Text, out intValue); 
if (correct) 
{ 
    ...   // this string parses well 
} else 
{ 
    ...   // this is not palatable 
} 

вы можете преобразовать строку в целое число называется intValue.

Если он не работает, проверьте тип данных столбцов в таблице базы данных.

+0

Благодаря своей работе –

Смежные вопросы