Я пытаюсь сделать 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
Неверное имя столбца «FGACJD_Vin_Ecu. Vin ', вы уверены, что все соответствует вашей базе данных? – horHAY
Какая схема принадлежит вашей таблице? –
Использование 'String.Format' не мешает вам использовать sql-injection. Вместо этого используйте sql-параметры. –