5

MS SQL Server で既に設定されている DB に INSERT を実行しようとしています。DB サーバーは共有ホスティング (godaddy) にあります。

そして、私が達成しようとしているのは、記事をデータベースに保存することですが、記事を公開またはプレビューするたびに、サーバーからスローされます

SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Data.SqlTypes.SqlTypeException: SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace: 


[SqlTypeException: SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.]
System.Data.SqlClient.TdsParser.TdsExecuteRPC(_SqlRPC[] rpcArray, Int32 timeout, Boolean inSchema, SqlNotificationRequest notificationRequest, TdsParserStateObject stateObj, Boolean isCommandProc, Boolean sync, TaskCompletionSource`1 completion, Int32 startRpc, Int32 startParam) +5635
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite) +1379
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite) +175
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +53
System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +134
System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) +41
System.Data.Common.DbCommand.ExecuteReader() +12
System.Data.Linq.SqlClient.SqlProvider.Execute(Expression query, QueryInfo queryInfo, IObjectReaderFactory factory, Object[] parentArgs, Object[] userArgs, ICompiledSubQuery[] subQueries, Object lastResult) +1306
System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(Expression query, QueryInfo[] queryInfos, IObjectReaderFactory factory, Object[] userArguments, ICompiledSubQuery[] subQueries) +118
         System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query) +342
System.Data.Linq.StandardChangeDirector.DynamicInsert(TrackedObject item) +145
System.Data.Linq.StandardChangeDirector.Insert(TrackedObject item) +215
System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode) +378
System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode) +372
System.Data.Linq.DataContext.SubmitChanges() +23
sgc.Servicio.CrearServicio.InsertDB(Object sender, EventArgs e) in    CrearArticulo.aspx.cs:114
System.EventHandler.Invoke(Object sender, EventArgs e) +0
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9553178
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +103
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +9642898
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1724

記事の日付を取得する必要がある共有ホスティングにDatetimeタイプ フィールドがありますが、他の記事テーブルでこのエラーがスローされることはありません。これだけで、タイプミスか何か?

これは私のコードです(エラーをスローするコード):

public partial class CrearServicio : System.Web.UI.Page
{
    string tpCont = "1";
    int estatus = 1;
    bool withResponse = true;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            TextBox1.Attributes.Add("onKeyDown", "textCounter(this, 'counter1', 500)");
            TextBox1.Attributes.Add("onKeyUp", "textCounter(this, 'counter1', 500)");

            datetime.Text = DateTime.Now.ToString("yyyyMMddHHmmss");

            if (Request.QueryString["tpCont"] != null)
            {
                tpCont = Request.QueryString["tpCont"];
                volver.HRef = "elegir.aspx?tpCont=" + tpCont;
                volver1.HRef = "elegir.aspx?tpCont=" + tpCont;
            }

            ConexionServiciosDataContext db = new ConexionServiciosDataContext();

            tpContinpt.Text = tpCont;

            int role = kernel.getUserRole(User.Identity.Name);

            int tipoUsuario = role;

            if (tipoUsuario == 1 || tipoUsuario == 2)
            {
                mainButton.Visible = true;
                saveButton.Visible = true;
                displayButton.Visible = true;
            }
        }
    }

    protected void SaveDBAndDisplay(object sender, EventArgs e)
    {
        withResponse = false;

        SaveDB(sender, e);
    }

    protected void SaveDB(object sender, EventArgs e)
    {
        estatus = 2;

        InsertDB(sender, e);
    }

    protected void InsertDB(object sender, EventArgs e)
    {
        tpCont = tpContinpt.Text;

        if (TextArea1.Text.Length > 0)
        {
            ConexionServiciosDataContext db = new ConexionServiciosDataContext();

            Servicios columna = new Servicios();
            columna.Título = TextBox1.Text.ToString();
            string line = TransformarString(TextArea1.Text.ToString());
            columna.Contenido = line.ToString();

            string[] IDsTitlesLocations = { };

            db.Servicios.InsertOnSubmit(columna);
            db.SubmitChanges();
        }
}
}

書きすぎたらすみませんが、これに固執しているだけです。サーバーで日時形式を設定する必要がありますか?

誰でもこれに光を当てることができますか?

4

5 に答える 5

4

試してみて、この作品が希望DateTime.Nowの場合。textfeild DateTime.Now.ToString();

私が持っているのとほぼ同じケースで正常に動作します。

1/1/0001 12:00:00 AM などは sqlServer のデフォルトであり、上記のコメントでは、メソッドを削除した後に何もしないということは、参照などを更新していないことを意味します。

削除したいものが削除されていることを確認し、削除されていない場合は、プロパティを変更して更新+チェックして強制します

于 2013-09-26T06:12:38.827 に答える
1

日時を文字列に変換する理由がわかりません??

 datetime.Text = DateTime.Now.ToString("yyyyMMddHHmmss");

DBに日時を挿入する必要がある場合は、その日時変数を挿入コマンドに渡すだけです。

DateTime dt = new DateTime();
dt = DateTime.Now.Date;

DB に挿入すると、DB はそれを適切な日時形式に変換します。やってみなよ。

于 2013-09-26T06:17:27.023 に答える