Laden...

Fehlermeldung aufgrund falscher Spaltenangabe

Erstellt von freakontour vor 4 Jahren Letzter Beitrag vor 4 Jahren 778 Views
F
freakontour Themenstarter:in
15 Beiträge seit 2015
vor 4 Jahren
Fehlermeldung aufgrund falscher Spaltenangabe

verwendetes Datenbanksystem: SQL-Server 2014

Hallo,

ich habe einen DB-Zugriff programmiert, der ein INSERT-Statement aufruft.
Dabei kommt aber immer folgende Fehlermeldung zurück.
Ich habe schon die Tabellen und Spaltenangaben überprüft, finde aber den Fehler nicht.
Bild der Tabelle ist im Anhang.


private static int InsertSql(string[,] mySqlData)
        {
            SqlConnection connSql = DBSql.GetDBConnection();

            connSql.Open();

            SqlCommand cmdInsert = new SqlCommand("INSERT INTO dbo.[327_EOL_SERBIA] "
                //+ "([eolID], [order_number], [material_number], [serial_number], [runtime], [value_angle], [state_angle], [state_envelope], [state_label], [state_disenganging], [state_GETR], [Copied_TS] )"
                + " VALUES (@eolID, @order_number, @material_number, @serial_number, @runtime, @value_angle, @state_angle, @state_envelope, @state_label, @state_disenganging, @state_GETR, @Copied_TS)", connSql);
            int i=0;


            try
            {
                for (i = 0; i < mySqlData.GetUpperBound(0); i++)
                {
                    cmdInsert.Parameters.AddWithValue("@eolID", Convert.ToInt64(mySqlData[i, 0]));
                    cmdInsert.Parameters.AddWithValue("@order_number", Convert.ToInt64(mySqlData[i, 1]));
                    cmdInsert.Parameters.AddWithValue("@material_number", Convert.ToInt32(mySqlData[i, 2]));
                    cmdInsert.Parameters.AddWithValue("@serial_number", mySqlData[i, 3]);
                    cmdInsert.Parameters.AddWithValue("@runtime", Convert.ToDouble(mySqlData[i, 4]));
                    cmdInsert.Parameters.AddWithValue("@value_angle", Convert.ToDouble(mySqlData[i, 5]));
                    cmdInsert.Parameters.AddWithValue("@state_angle", Convert.ToByte(mySqlData[i, 6]));
                    cmdInsert.Parameters.AddWithValue("@state_envelope", Convert.ToByte(mySqlData[i, 7]));
                    cmdInsert.Parameters.AddWithValue("@state_label", Convert.ToByte(mySqlData[i, 8]));
                    cmdInsert.Parameters.AddWithValue("@state_disenganging", Convert.ToByte(mySqlData[i, 9]));
                    cmdInsert.Parameters.AddWithValue("@state_GETR", Convert.ToByte(mySqlData[i, 10]));
                    //cmdInsert.Parameters.AddWithValue("@datetime", Convert.ToDateTime(mySqlData[i, 11]));
                    cmdInsert.Parameters.AddWithValue("@Copied_TS", DateTime.UtcNow);

                    cmdInsert.ExecuteNonQuery();
                }

                return i;
            }
            catch (Exception er)
            {
                log.createLog(eol + "Error  " + er.ToString());
                return i;
            }
            finally
            {
                connSql.Close();
                connSql.Dispose();
            }
        }   

    }

Fehler:

Fehlermeldung:
06.08.2019 16:22:01 EOL-Bezeichnung: Error System.Data.SqlClient.SqlException (0x80131904): Der Spaltenname oder die Anzahl der bereitgestellten Werte entspricht nicht der Tabellendefinition.
bei System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction) bei System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction)
bei System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
bei System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
bei System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
bei System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
bei System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource1 completion, Int32 timeout, Task&amp; task, Boolean&amp; usedCache, Boolean asyncWrite, Boolean inRetry) bei System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
bei System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
bei SQL_Access.Program.InsertSql(String[,] mySqlData) in C:\Users\Kosicki Sebastian.ARIANE\source\repos\SQL_Access\SQL_Access\Program.cs:Zeile 159.
ClientConnectionId:ab6840c6-6c72-484a-8ed6-452a03903de7
Fehlernummer (Error Number):213,Status (State):1,Klasse (Class):16

F
freakontour Themenstarter:in
15 Beiträge seit 2015
vor 4 Jahren

HAllo,

habe meinen Fehler gefunden, eine Zeile war auskommentiert. Dies wurde erst ersichtlich als den Code hier gepostet habe.

Gruß Freakontour