2016-06-13 6 views
-1

Следующая часть моего кода работает прекрасно, пока я не перезагрузил свой компьютер, и теперь он дает мне ошибку ArgumentException была необработанной с этой ошибкой:ArgumentException Unhandled

An unhandled exception of type 'System.ArgumentException' occurred in System.Data.dll

Additional information: Invalid value for key 'integrated security'

{ 
    SqlConnection con = new SqlConnection(@"Data Source=M2192822\SHIFTREPORTS;Initial Catalog=ShiftReports;Integrated Security=ture"); 
    SqlDataAdapter sda = new SqlDataAdapter("Select Count(*) From [All of Production] where Tool ='" + MoldText.Text + "' and [Internal Part Number] ='" + IPNText.Text + "'", con); 
    DataTable dta = new DataTable(); 
    sda.Fill(dta); 
    MessageBox.Show("Part or Mold Number is Incorrect"); 
} 

if (dta.Rows[0][0].ToString() != "1") 
+3

true not ture .. – Ian

ответ

3

Поскольку ошибка message говорит, ture является недопустимым значением для Integrated Security. Вы должны использовать Integrated Security=true.

В коде есть другие, более серьезные проблемы. Во-первых, соединение не закрывается. Во-вторых, вы создаете инструкцию SQL, используя конкатенацию строк, что является верным способом подвергнуть себя атакам SQL-инъекций. Представьте, что произойдет, если пользователь ввел 1';drop table Products;--

Правильно закрывая соединение и использование параметризованных запросов на самом деле проще, чем конкатенации:

var connString = @"Data Source=M2192822\SHIFTREPORTS;Initial Catalog=ShiftReports;Integrated Security=true"; 
var query="Select Count(*) From [All of Production] where Tool = @tool and [Internal Part Number] = @part"; 
DataTable dta = new DataTable(); 

using(var con = new new SqlConnection(connString)) 
using(var sda=new SqlDataAdapter(query, con) 
{ 
    var cmdParameters=sda.SelectCommand.Parameters; 
    parameters.AddWithValue("@tool",MoldText.Text); 
    parameters.AddWithValue("@part",IPNText.Text); 
    sda.Fill(dta); 
} 

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

+0

В нем говорится, что он не может преобразовать запрос из 'string' в 'System.Data.SqlClient.SqlCommand' – Carlos

+0

К сожалению, забыли добавить параметр подключения –

+0

Хорошо, но это делает Это позволит пользователю вводить любой желаемый Инструмент или номер детали, и я хочу, чтобы он ошибся, когда введенные данные неверны для одного. – Carlos

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