2015-04-15 2 views
0

Я пытаюсь сделать SQL-запрос и сохранить результат в файле XML, но я получаю сообщение об ошибке, как показано здесь. INVALID COLUMN! этот запрос отлично работает в сервере SQL, но не здесьОшибка набора данных адаптера данных, ошибка подключения SQL

namespace xxxxxxxxxxxx 
{ 
    public partial class MainWindow : Window 
    { 
     string vinValue; 
     string operationValue; 
     string serviceValue; 

    public MainWindow() 
    { 
     InitializeComponent(); 
    } 

    private void FrameLoad_Activated(object sender, EventArgs e) 
    { 

    } 

    private void btnGo_Click(object sender, RoutedEventArgs e) 
    { 

     DataSet ds = new DataSet(); 
     SqlDataAdapter adapter; 

     string sql = String.Format("SELECT FGACJD_Vin_Ecu.Vin,FGACJD_Vin_Ecu.NHard,"+ 
      "FGACJD_Vin_Ecu.NVerHard,FGACJD_Vin_Ecu.NSoft,FGACJD_Vin_Ecu.NVerSoft,"+ 
      "InfoProg_wiTECH_Global.NHard,InfoProg_wiTECH_Global.NVerHard,"+ 
      "InfoProg_wiTECH_Global.NSoft,InfoProg_wiTECH_Global.NSoftNew,"+ 
      "InfoProg_wiTECH_Global.NVerSoft,InfoProg_wiTECH_Global.NomeFile,"+ 
      "InfoProg_wiTECH_Associa.KeyJoined,InfoProg_wiTECH_Associa.MakeID,"+ 
      "InfoProg_wiTECH_Associa.ModelID,InfoProg_wiTECH_Associa.Model_Type "+ 
      "FROM FGACJD_Vin_Ecu, InfoProg_wiTECH_Global,InfoProg_wiTECH_Associa "+ 
      "WHERE [FGACJD_Vin_Ecu.Vin]='{0}'"+ 
      " AND InfoProg_wiTECH_Associa.KeyJoined = InfoProg_wiTECH_Global.NomeFile"+ 
      " AND FGACJD_Vin_Ecu.NHard=InfoProg_wiTECH_Global.NHard"+ 
      " AND InfoProg_wiTECH_Global.NVerHard like '%'+FGACJD_Vin_Ecu.NVerHard "+ 
      "FOR XML PATH('flash'), ROOT ('FlashList ')", vinValue); 


     //TextOutput.Text = sql; 
     string connectionString = "user id=xxx;password=xxx;"+ 
         "server=localhost;" + 
         "Trusted_Connection=yes;" + 
         "database=xxx; " + 
         "connection timeout=30"; 

     SqlConnection conn = new SqlConnection(connectionString); 
     try 
     { 
      conn.Open(); 
     } 
     catch (Exception) 
     { 
      string err = "Database error contact administrator"; 
      MessageBox.Show(err, "Error!"); 
     } 

     try 
     { 

      adapter = new SqlDataAdapter(sql, conn); 
      adapter.Fill(ds); 
      conn.Close(); 
      ds.WriteXml("Product.xml"); 
      MessageBox.Show("Done"); 
     } 

     catch (Exception ex) 
     { 
      MessageBox.Show(ex.ToString()); 
     } 
    } 

    private void TextInput_TextChanged(object sender, TextChangedEventArgs e) 
    { 
     vinValue = TextInput.Text; 
    } 

    private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     var comboBox = sender as ComboBox; 
     serviceValue = comboBox.SelectedItem as string; 
     this.Title = "Selected: " + serviceValue; 
    } 

    private void ComboBox_Loaded(object sender, RoutedEventArgs e) 
    { 
     List<string> data = new List<string>(); 
     data.Add("getFlashListByVIN"); 
     var comboBox = sender as ComboBox; 
     comboBox.ItemsSource = data; 
     comboBox.SelectedIndex = 0; 
    } 

    private void Operation_Loaded(object sender, RoutedEventArgs e) 
    { 
     List<string> data = new List<string>(); 
     data.Add("MOC"); 
     var comboBox = sender as ComboBox; 
     comboBox.ItemsSource = data; 
     comboBox.SelectedIndex = 0; 
    } 

    private void Operation_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     var comboBox = sender as ComboBox; 
     operationValue = comboBox.SelectedItem as string; 
     this.Title = "Selected: " + operationValue; 
    } 
} 

}

Я получаю эту ошибку

System.Data.SqlClient.SqlException (0x80131904): Invalid имя столбца «FGACJD_Vin_Ecu .Vin. в System.Data.SqlClient.SqlConnection.OnError (SqlException исключения, булевой breakConnection, действия 1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action 1 wrapCloseInAction) в System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning (TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) в системы. Data.SqlClient.TdsParser.TryRun (runBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader DATASTREAM, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, булева & dataReady) при System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() в System.Data.SqlClient .SqlDataReader.get_MetaData() в System.Data.SqlClient.SqlCommand.FinishExecuteReader (SqlDataReader DS, RunBehavior runBehavior, String resetOptionsString) на System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior, RunBehavior runBehavior, булева returnStream, булева асинхронными, Int32 тайм-аута, задача & задачи, булева asyncWrite, SqlDataReader DS) в System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, runBehavior runBehavior, булева returnStream, String метод, TaskCompletionSource`1 завершение, Int32 тайм-аут, задача & задача, Boolean asyncWrite) в System.Data.SqlClient.SqlCommand.RunExecuteRea дер (CommandBehavior cmdBehavior, RunBehavior runBehavior, булева returnStream, String метод) при System.Data.SqlClient.SqlCommand.ExecuteReader (CommandBehavior поведение, метод String) в System.Data.SqlClient.SqlCommand.ExecuteDbDataReader (CommandBehavior поведение) при System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader (CommandBehavior поведения) при System.Data.Common.DbDataAdapter.FillInternal (DataSet набора данных, DataTable [] DataTables, Int32 startRecord, Int32 MaxRecords, String srcTable, команда IDbCommand, поведение CommandBehavior) в System.Data.Common.DbDataAdapter.Fill (DataSet dataSet, Int32 startRecord, Int32 MaxRecords, String srcTable, команда IDbCommand, поведение CommandBehavior) в System.Data.Common.DbDataAdapter.Fill (DataSet DataSet) в FlashListByVinLadan.MainWindow.btnGo_Click (отправитель объекта, RoutedEventArgs е) в с: \ Пользователи \ Finsoft \ Desktop \ тест \ FlashListByVinLadan \ FlashListByVinLadan \ MainWindow.xaml.CS: линия 80 ClientConnectionId: 3653b64e-bb82-41cb-8fc8-4d92fbaa3c3e Ошибка Количество: 207, Состояние: 1, Класс: 16

+0

Неверное имя столбца «FGACJD_Vin_Ecu. Vin ', вы уверены, что все соответствует вашей базе данных? – horHAY

+0

Какая схема принадлежит вашей таблице? –

+1

Использование 'String.Format' не мешает вам использовать sql-injection. Вместо этого используйте sql-параметры. –

ответ