各位大侠,请听我道来。
我在一个页面上添加一个Detailsview,一个Objectdatasource,数据源的INSERT方法是调用DL.CS中的 public void insertok(string bookID, string bookTitle, DateTime bookDate),请注意最后一个参数类型为DateTime。
现在我想在插入记录时判断日期是否合法,如果不合法或为空,则默认为当前时间DateTime。now,在insertok里应该如何判断呢?相关代码: string sqlstr = "insert into Books(bookTitle,bookISBN,bookPrice,bookPublisher,bookAuthor,bookDate,bookID,bookCoverUrl) " +
" values(@bookTitle,@bookISBN,@bookPrice,@bookPublisher,@bookAuthor,@bookDate,@bookID,@bookCoverUrl)";
SqlCommand sqlCmd = new SqlCommand(sqlstr, mycon);
if (bookTitle == null) bookTitle = "";
if (bookISBN == null) bookISBN = "";
if (bookPublisher == null) bookPublisher = "";
if (bookAuthor == null) bookAuthor = "";
if (bookCoverUrl == null) bookCoverUrl = ""; if (bookDate == null) bookDate = DateTime.Now; //请注意这里不起作用
if (bookPrice == null) bookPrice = 0;
sqlCmd.Parameters.Add("@bookID", SqlDbType.NChar, 10).Value = bookID;
sqlCmd.Parameters.Add("@bookTitle", SqlDbType.NChar, 50).Value = bookTitle;
。。;
sqlCmd.Parameters.Add("@bookCoverUrl", SqlDbType.NChar, 50).Value = bookCoverUrl;
sqlCmd.Parameters.Add("@bookDate", SqlDbType.DateTime).Value = bookDate;
mycon.Open();
returnValue = sqlCmd.ExecuteNonQuery();
在判断的地方我试用了搜索来的很多方法,比如Datetime.parse,Datetime.tryparse,convert.todatetime,is datetime,bookdate.tostring()==""等,但均不见效果,请高手指点一下,如果不合法或为空,则默认为当前时间DateTime。now。谢谢啊。
我在一个页面上添加一个Detailsview,一个Objectdatasource,数据源的INSERT方法是调用DL.CS中的 public void insertok(string bookID, string bookTitle, DateTime bookDate),请注意最后一个参数类型为DateTime。
现在我想在插入记录时判断日期是否合法,如果不合法或为空,则默认为当前时间DateTime。now,在insertok里应该如何判断呢?相关代码: string sqlstr = "insert into Books(bookTitle,bookISBN,bookPrice,bookPublisher,bookAuthor,bookDate,bookID,bookCoverUrl) " +
" values(@bookTitle,@bookISBN,@bookPrice,@bookPublisher,@bookAuthor,@bookDate,@bookID,@bookCoverUrl)";
SqlCommand sqlCmd = new SqlCommand(sqlstr, mycon);
if (bookTitle == null) bookTitle = "";
if (bookISBN == null) bookISBN = "";
if (bookPublisher == null) bookPublisher = "";
if (bookAuthor == null) bookAuthor = "";
if (bookCoverUrl == null) bookCoverUrl = ""; if (bookDate == null) bookDate = DateTime.Now; //请注意这里不起作用
if (bookPrice == null) bookPrice = 0;
sqlCmd.Parameters.Add("@bookID", SqlDbType.NChar, 10).Value = bookID;
sqlCmd.Parameters.Add("@bookTitle", SqlDbType.NChar, 50).Value = bookTitle;
。。;
sqlCmd.Parameters.Add("@bookCoverUrl", SqlDbType.NChar, 50).Value = bookCoverUrl;
sqlCmd.Parameters.Add("@bookDate", SqlDbType.DateTime).Value = bookDate;
mycon.Open();
returnValue = sqlCmd.ExecuteNonQuery();
在判断的地方我试用了搜索来的很多方法,比如Datetime.parse,Datetime.tryparse,convert.todatetime,is datetime,bookdate.tostring()==""等,但均不见效果,请高手指点一下,如果不合法或为空,则默认为当前时间DateTime。now。谢谢啊。
解决方案 »
- 如何调用c++的dll
- split赋值的问题
- decimal 与 Decimal 的区别?
- 如何用javascript,得到file field上传图片的图片宽度,谢谢!
- ???模糊处理的工具是不是可以对一个project的个别class进行模糊处理??
- “WindowsFormsApplication1.Form1”的类型初始值设定项引发异常。
- 帮帮忙
- 我要用 DataGrid.HitTestInfo,为什么我打DataGrid后为什打点以后不显示HitTestInfo
- 谁有C#连接SQL数据库的例子,给我几个例子啊,急!!!!!
- 问个HTML的问题
- 怎么设置默认值
- 求一DRP系统...代码不需要太完整,得有文档...
if(DateTime.TryPase(bookDate,out bookDate))
{
}
谢谢这位高手啊,请问你的意思是这样吗? DateTime dt = DateTime.Now;
if (DateTime.TryParse(bookDate, out bookDate))
{ }
else
{
bookDate = dt;
}
可是提示错误:
源错误:编译器错误信息: CS1502: 与“System.DateTime.TryParse(string, out System.DateTime)”最匹配的重载方法具有一些无效参数 行 114: if (DateTime.TryParse(bookDate, out bookDate))好像不行哎。
DateTime bookDate = DateTime.Now;
string strTime =Convert.ToString(bookDate);
if (DateTime.TryParse(strTime,out bookDate))
{
bookDate = Convert.ToString(dt);
}
else
{
bookDate = Convert.ToString(dt);
}
string ds = Convert.ToString(dt);
if (DateTime.TryParse(ds,out dt))
{
this.LinkButton1.Text = Convert.ToString(dt);
}
else
{
this.LinkButton1.Text = Convert.ToString(dt);
}
你的方法我之前已经使用过了,只对了一半,这是我修改的代码,语法上讲应该没什么问题: DateTime dt = DateTime.Now;
DateTime dtt;
if (DateTime.TryParse(bookDate.ToString(), out dtt))
{ }
else
{
dtt = dt;
}
sqlCmd.Parameters.Add("@bookDate", SqlDbType.DateTime).Value = dtt;
当数据形如“2009-5-5”这样比较符合才可以运行,如果该字段没填内容,则报以下错误:
SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.SqlTypes.SqlTypeException: SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间。源错误:
行 137:
行 138: mycon.Open();
行 139: returnValue = sqlCmd.ExecuteNonQuery(); 而如果胡乱输入,比如“2009”,则会这样报错:该字符串未被识别为有效的 DateTime。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.FormatException: 该字符串未被识别为有效的 DateTime。源错误: 执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。
总之还不太完善啊,这怎么办呢,请再帮我想想办法吧。谢谢了。
{//}
else
{//}
if (bookDate == null)
{
dtt = dt;
}
else
{
if (DateTime.TryParse(bookDate.ToString(), out dtt))
{ }
else
{
dtt = dt;
}
}
改成这样还是不行,仍然报那个溢出错误,现在我觉得当bookdate没值时可能不是null,或许是其他,现在就是需要搞清楚到底是什么。
--------------------------------------------------------------------------------SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.SqlTypes.SqlTypeException: SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间。源错误:
行 147:
行 148: mycon.Open();
行 149: returnValue = sqlCmd.ExecuteNonQuery();
行 150:
行 151: }
源文件: e:\mjx\searchina\WebSite1\App_Code\dl\dl.cs 行: 149 堆栈跟踪:
[SqlTypeException: SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间。]
System.Data.SqlTypes.SqlDateTime.FromTimeSpan(TimeSpan value) +331
System.Data.SqlTypes.SqlDateTime.FromDateTime(DateTime value) +147
System.Data.SqlTypes.SqlDateTime..ctor(DateTime value) +21
System.Data.SqlClient.MetaType.FromDateTime(DateTime dateTime, Byte cb) +68
System.Data.SqlClient.TdsParser.WriteValue(Object value, MetaType type, Int32 actualLength, Int32 encodingByteSize, Int32 offset, TdsParserStateObject stateObj) +1161
System.Data.SqlClient.TdsParser.TdsExecuteRPC(_SqlRPC[] rpcArray, Int32 timeout, Boolean inSchema, SqlNotificationRequest notificationRequest, TdsParserStateObject stateObj) +4078
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +1021
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +314
System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) +413
System.Data.SqlClient.SqlCommand.ExecuteNonQuery() +115
dl.insertok(String bookID, String bookTitle, String bookISBN, Int32 bookPrice, String bookPublisher, String bookAuthor, String bookCoverUrl, DateTime bookDate) in e:\mjx\searchina\WebSite1\App_Code\dl\dl.cs:149[TargetInvocationException: 调用的目标发生了异常。]
System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) +0
System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) +72
System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks) +358
System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) +29
System.Web.UI.WebControls.ObjectDataSourceView.InvokeMethod(ObjectDataSourceMethod method, Boolean disposeInstance, Object& instance) +484
System.Web.UI.WebControls.ObjectDataSourceView.InvokeMethod(ObjectDataSourceMethod method) +39
System.Web.UI.WebControls.ObjectDataSourceView.ExecuteInsert(IDictionary values) +738
System.Web.UI.DataSourceView.Insert(IDictionary values, DataSourceViewOperationCallback callback) +68
System.Web.UI.WebControls.DetailsView.HandleInsert(String commandArg, Boolean causesValidation) +395
System.Web.UI.WebControls.DetailsView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) +609
System.Web.UI.WebControls.DetailsView.OnBubbleEvent(Object source, EventArgs e) +88
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +35
System.Web.UI.WebControls.DetailsViewRow.OnBubbleEvent(Object source, EventArgs e) +109
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +35
System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e) +86
System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) +155
System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +172
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4919
--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:2.0.50727.42; ASP.NET 版本:2.0.50727.42
我记得“ExecuteNonQuery()” 撒东西都不返回啊!