Pregunta

Estoy tratando de seguir un tutorial en línea y he seguido los pasos exactamente sin embargo, siempre sigo recibiendo un error al intentar escribir en una base de datos.

Aquí está el código para una forma simple

@{
var name = string.Empty;
var email = string.Empty;
var subject = string.Empty;
var message = string.Empty;

if (IsPost){
    name = Request["txtName"];
    email = Request["txtEmail"];
    subject = Request["txtSubject"];
    message = Request["txtMessage"];

    var db = Database.Open("FormAndDataDB");

    db.Execute("INSERT INTO ContactLog (Name, Email, Subject, Message, DateSent) " +
      "VALUES (@0, @1, @2, @3, @4)", name, email, subject, message, DateTime.Now);
}    

 }

 <doctype html>

 <html lang="en">
<head>
    <meta charset="utf-8" />
    <title></title>
</head>

<body>
    <form action="contact.cshtml" method="POST">
        <p>
            <label for="txtName">Name:</label><br />
            <input type="text" name="txtName" id="txtName" value="@name"/>
        </p>

        <p>
            <label for="txtEmail">Email:</label><br />
            <input type="text" name="txtEmail" id="txtEmail" value="@email" />
        </p>

        <p>
            <label for="txtSubject">Subject:</label><br />
            <input type="text" name="txtSubject" id="txtSubject" value="@subject" />
        </p>

        <p>
            <label for="txtMessage">Message:</label><br />
            <textarea name="txtMessage" id="txtMessage" cols="40" rows="10" >@message</textarea>
        </p>

        <p>
            <input type="submit" value="send" />
        </p>
    </form>
</body>
</html>

Aquí está el error que recibo en Visual Studio en el intento de ejecución de la Declaración de inserción SQL:

"An exception of type 'System.Data.SqlServerCe.SqlCeException' occurred in System.Data.SqlServerCe.dll but was not handled in user code"

Este es el texto de error devuelto desde SQL y se muestra en la página web:

"The column cannot contain null values. [ Column name = ID,Table name = ContactLog ]"

He completado el formulario completamente

¿Fue útil?

Solución

Sus errores en la pregunta que no obstante, el problema parece ser que tiene una tabla (ContactLog) con una columna (ID) que tiene el atributo no nulo adjunto a él.Está intentando insertar una fila sin un valor en dicha columna, y eso está causando este error.

Para solucionar esto, inserte un valor en la columna [ID] o establezca el atributo de identidad en verdadero en lugar de FALSO en dicha columna y permítale a Autogenerate / AutoinCrement.

Mi suposición es que incluso cuando solucionó la sintaxis de la instrucción INSERT, aún no podría procesar el inserto correctamente.

Otros consejos

Tiene cinco columnas, pero solo 3 valores.

Su declaración es

INSERT INTO ContactLog (Name, Email, Subject, Message, DateSent)
                VALUES (@0, @1, @3)

¿Qué pasó con @ 2 y @ 4?

Tal vez usted necesita

db.Execute("INSERT INTO ContactLog (Name, Email, Subject, Message, DateSent) "+
           "VALUES (@0, @1, @2, @3, @4)",
           name, email, subject, message, DateTime.Now);

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top