3

さまざまなマスクなどを持つテキスト ボックスから値を取得して、データベース テーブルに日時を追加しようとしています。次のエラーが発生します。

String was not recognized as a valid DateTime.

テキスト ボックス コード:

<asp:TableRow>
        <asp:TableCell>    
                <asp:ToolkitScriptManager ID="calendarToolkit" runat="server"></asp:ToolkitScriptManager>   
                <asp:TextBox ID="startDateTextbox" runat="server"></asp:TextBox>  
                <asp:CalendarExtender Format="yyyy-dd-MM"  ID="startDateExtender" TargetControlID="startDateTextbox" runat="server" /> 
        </asp:TableCell>
    </asp:TableRow>

    <asp:TableRow>
        <asp:TableCell>    
                <asp:TextBox ID="startTimeTextbox" runat="server"></asp:TextBox>  
                <asp:MaskedEditExtender ID="m1" runat="server" Mask="99:99" MaskType="Time" AcceptAMPM="false" 
                                    MessageValidatorTip="true" TargetControlID="startTimeTextbox"
                                    ClearMaskOnLostFocus="false">
                </asp:MaskedEditExtender>

                <asp:MaskedEditValidator ID="mv1" runat="server" ControlExtender="m1" ControlToValidate="startTimeTextbox"
                                    Display="none" EmptyValueMessage="Time is required" InvalidValueMessage="Valid Start Time"
                                    IsValidEmpty="true" TooltipMessage="Input a time">
                </asp:MaskedEditValidator>
        </asp:TableCell>
    </asp:TableRow>

データベースに値を追加する c# コード:

string sqlQuery =
                "insert into dbo.Event_Info(event_name, description, location, date_end,date_start,image_url) values(@name, @desc, @location,@startDate,@endDate,@imageURL)";

SqlConnection dbConnection = new SqlConnection("server=(local)\\SGSQL;database=STEvent;Trusted_Connection=yes");
            dbConnection.Open();
            SqlCommand dbCommand = new SqlCommand(sqlQuery, dbConnection);

SqlParameter startParam = new SqlParameter("@startDate",SqlDbType.DateTime);
            startParam.Value = Convert.ToDateTime(startDateTextbox.Text +" " + startTimeTextbox.Text);

            dbCommand.Parameters.Add(startParam);
            dbCommand.ExecuteNonQuery();

            dbConnection.Close();

注: 他のすべてのパラメーターが長く冗長に見えるため、コードのサブセットのみを追加しました。

4

2 に答える 2

3

to を解析してみてStringくださいDateTime

// String to DateTime
 String MyString;
 MyString = "1999-09-01 21:34 PM";
 //MyString = "1999-09-01 21:34 p.m.";  //Depends on your regional settings

 DateTime MyDateTime;
 MyDateTime = new DateTime();
 MyDateTime = DateTime.ParseExact(MyString, "yyyy-MM-dd HH:mm tt",
                                  null)
于 2012-12-05T12:21:51.230 に答える
1

日付形式「yyyy-dd-MM」は無効です。有効な形式については、SQL Server ドキュメントの「Convert」関数を参照できます。

「yyyy-MM-dd」は良い解決策です

于 2012-12-05T12:21:16.667 に答える