Я получаю неудобную ошибку в ExecuteNonQuery во второй последней строке.Строка ввода не была в правильном формате
Errormassage:
.NET Framework произошла ошибка во время выполнения определяемой пользователем подпрограммы или статистической «sp_InsertShuttleCount»: System.FormatException: Входная строка была не в правильном формате. System.FormatException: в System.Number.StringToNumber (String ул, опции NumberStyles, NumberBuffer & номер, NumberFormatInfo информация, Boolean parseDecimal) в System.Number.ParseInt32 (String s, NumberStyles стиль, NumberFormatInfo информация) на AtsProcedures. InsertShuttleErrorCount (SqlString shuttle, станции SqlString, ошибки SqlString, SqlString, SqlString errornests, SqlDateTime ts) .
StackTrace:
на System.Data.SqlClient.SqlConnection.OnError (SqlException исключением, булева breakConnection) в System.Data.SqlClient.SqlInternalConnection.OnError (SqlException исключением, булева breakConnection) на System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() в System.Data.SqlClient.TdsParser.Run (RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader DATASTREAM, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) в System.Data.SqlClient.SqlCommand.FinishExecut Ereader (SqlDataReader DS, RunBehavior runBehavior, Строка resetOptionsString) на System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior, RunBehavior runBehavior, булева returnStream, булева асинхронной) на System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior, runBehavior runBehavior, булева returnStream, метод String, DbAsyncResult результат) на System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery (результат DbAsyncResult, String имяМетода, булева sendToPipe) на System.Data.SqlClient.SqlCommand.ExecuteNonQuery() в ATS_Test_Data_Generator. Form1..ctor() в C: \ Code \ ATSBDE \ C# \ Generate Data \ ATS_Test_Data_Generator \ ATS_Test_Data_Generator \ Form1.cs: строка 113 в ATS_Test_Data_Generator.Program.Main() в C: \ Code \ ATSBDE \ C# \ Generate Data \ ATS_Test_Data_Gen Erator \ ATS_Test_Data_Generator \ Program.cs: строка 18 на System.AppDomain._nExecuteAssembly (RuntimeAssembly сборки, String [] арг) в System.AppDomain.ExecuteAssembly (String assemblyFile, Evidence assemblySecurity, String [] арг) в Microsoft.VisualStudio .HostingProcess.HostProc.RunUsersAssembly() в System.Threading.ThreadHelper.ThreadStart_Context (состояние объекта) в System.Threading.ExecutionContext.Run (ExecutionContext ExecutionContext, ContextCallback обратного вызова, объект состояния, Boolean ignoreSyncCtx) в System.Threading.ExecutionContext .Run (ExecutionContext executeContext, обратный вызов ContextCallback, состояние объекта) в System.Threading.ThreadHelper.ThreadStart()
Значения Строки
станции: 0; 5; 10; 15; 20; 30; 35; 40; 55; 60; 65; 70; 80; 85; 90; 100; 110; 120; 125;
Ошибки: 5; 3; 4; 4; 6; 4; 5; 4; 4; 6; 4; 5; 5; 4; 5; 3; 5;
Гнезда: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8; 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8; 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8; 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8; 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8; 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8; 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8; 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8; 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8; 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8; 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8; 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8; 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8; 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8; 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8; 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8; 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;
ErrorNests: 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 1; 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0; 1 | 1 | 1 | 0 | 1 | 1 | 1 | 0; 1 | 1 | 0 | 1 | 0 | 1 | 1 | 1; 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0; 0 | 1 | 1 | 1 | 1 | 0 | 0 | 1; 1 | 1 | 0 | 0 | 0 | 1 | 1 | 0; 0 | 0 | 0 | 1 | 1 | 0 | 1 | 1; 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1; 1 | 0 | 0 | 1 | 0 | 1 | 0 | 1; 0 | 0 | 1 | 1 | 1 | 0 | 0 | 1; 1 | 1 | 1 | 0 | 1 | 1 | 0 | 0; 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1; 0 | 1 | 1 | 0 | 1 | 1 | 0 | 0; 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1; 0 | 1 | 0 | 0 | 1 | 0 | 1 | 0; 1 | 1 | 1 | 0 | 0 | 0 | 1 | 1;
D является Datetime: d.ToString() "10.02.2012 6:01:00" строка
хранимых процедур занимает 4 NVARCHAR (4000) и один Datetime значения
for (int i = 0; i <= 16; i++) {
String Stations="";
String ErrorStations = "";
String Nests = "";
String ErrorNests = "";
command = new SqlCommand(null, connection) {
CommandText = "ats.sp_getStations",
CommandType = CommandType.StoredProcedure
};
SqlDataReader reader = command.ExecuteReader();
int k = 0;
while (reader.Read()) {
Stations += reader.GetInt32(0)+";";
Nests += "1|2|3|4|5|6|7|8;";
int m=0;
for (int j = 0; j < 8; j++) {
int l;
l=r.Next(0, 2);
nestcounts[i, k, j] += l;
m += l;
if(j!=7)
ErrorNests += nestcounts[i, k, j] + "|";
else
ErrorNests += nestcounts[i, k, j] + ";";
}
stationcounts[i, k] += m;
ErrorStations += stationcounts[i, k] + ";";
k++;
}
reader.Close();
command.Dispose();
command = new SqlCommand(null, connection) {
CommandText = "exec dbo.sp_InsertShuttleCount @shuttle, @stations, @errorstations, @nests, @errornests, @ts",
};
command.Parameters.Clear();
command.Parameters.Add("@shuttle", SqlDbType.NVarChar, 4000).Value = "1";
command.Parameters.Add("@stations", SqlDbType.NVarChar, 4000).Value = Stations;
command.Parameters.Add("@errorstations", SqlDbType.NVarChar, 4000).Value = ErrorStations;
command.Parameters.Add("@nests", SqlDbType.NVarChar, 4000).Value = Nests;
command.Parameters.Add("@errornests", SqlDbType.NVarChar, 4000).Value = ErrorNests;
command.Parameters.Add("@ts", SqlDbType.DateTime).Value = d;
command.ExecuteNonQuery();
command.Dispose();
}
Stored Процедура
Это процедура CLR, которая отлично работает, поскольку используется часто. И есть, конечно, 5 Nvarchars, которые были опечатками.
CREATE PROCEDURE [DBO]. [Sp_InsertShuttleCount] @shuttle NVARCHAR, @stations NVARCHAR, @errorstations NVARCHAR, @nests NVARCHAR, @errornests NVARCHAR, @ts [DateTime] С EXECUTE AS CALLER КАК ВНЕШНЕЕ иМЯ [ATS-CLR]. [AtsProcedures]. [InsertShuttleErrorCount] GO
ВЫПЛН sys.sp_addextendedproperty @ имя = N'SqlAssemblyFile '@ значение = N'AtsProcedures.cs', @ level0type = N' SCHEMA ', @ level0name = N'dbo', @ level1type = N'PROCEDURE ', @ level1name = N'sp _InsertShuttleCount ' GO
EXEC sys.sp_addextendedproperty @ имя = N'SqlAssemblyFileLine', @ значение = N'51' , @ level0type = N'SCHEMA '@ level0name = N'dbo', @ level1type = N'PROCEDURE ', @ level1name = N'sp_InsertShuttleCount' GO
Что не так с моим кодом?
Вы можете разместить хранимую процедуру, а также. Там может быть проблема. – aaronj
Да. И это занимает 4 nvarchars и 1 datetime, или это была опечатка? Вы называете это 6 аргументами, 5 из которых являются nvarchars. –