2013-09-04 2 views
0

Привет У меня этот код:SqlCommand - переход от VARCHAR к Int

SqlCommand sc2 = new SqlCommand("SELECT ... WHERE akce=" + zakce.Text, spojeni); 

spojeni.Open(); 

object vysledek2 = sc2.ExecuteScalar(); // This is the exception line 

Я receving следующее исключение:

System.Data.SqlClient.SqlException (0x80131904)
преобразования не удалось когда преобразует значение varchar '137000-01' в тип данных int.

В строке исключения, когда я устанавливаю точку останова на vysledek2, является null, а затем возникает исключение.

+0

Рассмотрим изменив имена переменных на английский язык - это довольно трудно читать :) – Codeman

+1

Также у вас есть опечатка между '' sumpayments' и от'. –

+4

BTW - см. «Bobby Tables» - через Google, Bing и т. Д. –

ответ

5

Никогда. Когда-либо. Соединить. Ввод.

SqlCommand sc2 = new SqlCommand("SELECT SUM(ISNULL(payments,0)) AS sumpaymentsFROM clientpayments WHERE [email protected]", spojeni); 
sc2.Parameters.AddWithValue("acke", zakce.Text); 

Также - команды, соединения и т.д., все IDisposable - вы должны использовать using вокруг каждого из них.

+0

Hell Marc, спасибо за ответ, я попробовал то, что вы посоветовали, но все же получил то же исключение, разве у вас нет идеи, где я совершил ошибку? – Marek

+0

@Marek: - Как совет, почему вы хотите исправить свою ошибку с плохой практикой кодирования ?? –

+0

@Marek, который не может выбрасывать одно и то же исключение - здесь нет конвертации/преобразования. проверьте, что вы создали и т. д., и проверьте точное сообщение –

0

Во-первых, попробуйте изменить

SqlCommand sc2 = new SqlCommand("SELECT SUM(ISNULL(payments,0)) AS sumpaymentsFROM clientpayments WHERE akce=" + zakce.Text, spojeni); 

к чему-то вроде

SqlCommand sc2 = new SqlCommand("SELECT SUM(ISNULL(payments,0)) AS sumpaymentsFROM clientpayments WHERE akce='" + zakce.Text + "'", spojeni); 

Во-вторых, посмотрите на то, что SQL Injection и как использовать parametereized queries.

1
 const string sqlSelect = @"SELECT ... WHERE [email protected]"; 
     using (spojeni = new SqlConnection(connectionString)) 
     using(var command = new SqlCommand(sqlSelect,spojeni)) 
     { 
      command.Parameters.AddWithValue("@akce", zakce.Text); 
      command.Connection.Open(); 
      object vysledek2 = command.ExecuteScalar(); 
     } 
Смежные вопросы