Когда я запускаю этот код, я получаю это исключение:SQL Server: вставить параметр NULL, но имеет значение в C#
Не удается вставить значение NULL в столбец «MultipleAnswerNameID», таблица «G2A.dbo.MultipleAnswerName «; столбец не допускает нулей. INSERT терпит неудачу.
MultiAnswerNameID имеет значение, даже когда я отладки ...
Исключение генерируется, когда программа приходит в этот код:
rows += command.ExecuteNonQuery();
Мой код:
SqlCommand command = null;
int rows = 0;
using (SqlConnection connection = G2ADB.GetConnection())
{
connection.Open();
SqlTransaction transaction = connection.BeginTransaction();
int answerID = addAnswer((int)G2A.Type.MultipleAnswer, transaction, connection);
try
{
SqlParameter prmanswerID = new SqlParameter("@answerid", answerID);
command = new SqlCommand("INSERT MultipleAnswer (AnswerID) VALUES (@answerid)", connection, transaction);
command.Parameters.Add(prmanswerID);
rows += command.ExecuteNonQuery();
if (rows == 1)
{
DebugMess.debugMessage("Added answer");
}
rows = 0;
DebugMess.debugMessage(answerID.ToString());
for (int i = 0; i < answers.GetLength(0); i++)
{
command.Parameters.Clear();
command.CommandText = "INSERT MultipleAnswerName (MultipleAnswerName, MultipleAnswerCorrect,MultipleAnswerID) VALUES (@answerName,@answerCor,@multianswerid)";
SqlParameter prmopenanswerid = new SqlParameter("@multianswerid", answerID);
SqlParameter prmanswerName = new SqlParameter("@answerName", answers[i, 0]);
SqlParameter prmanswerVariable = new SqlParameter("@answerCor", answers[i, 1]);
command.Parameters.Add(prmopenanswerid);
command.Parameters.Add(prmanswerName);
command.Parameters.Add(prmanswerVariable);
rows += command.ExecuteNonQuery();
}
if (rows == answers.GetLength(0))
{
transaction.Commit();
DebugMess.debugMessage("Transaction of the answer committed.");
}
}
catch (Exception ex)
{
transaction.Rollback();
DebugMess.debugMessage("Transaction of the answer failed.\r\n\r\n" + ex.Message);
}
finally
{
connection.Close();
}
return answerID;
does MultiAnswerNameID является вашим основным ключом в таблице MultipleAnswerName? – Angelo
Я думаю, вы просто пропустите, чтобы поместить MultiAnswerNameID в свой оператор insert или если это поле является автономерным, возможно, вы забыли установить для вас спецификацию идентификатора поля да – Angelo