問個日期類型數據提交到數據庫時報錯 ,急。

postfxj 2008-04-01 11:43:14
我一字段日期類型允許為空,新增數據日期類型給它是空數據,但提交後報不在日期范圍之類,為何。
如何解決
...全文
143 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
etherealkite 2008-06-12
  • 打赏
  • 举报
回复
我给你发了社区短消息。
postfxj 2008-06-12
  • 打赏
  • 举报
回复
to etherealkite
你的QQ號是多少呀。
postfxj 2008-06-12
  • 打赏
  • 举报
回复
同是2000也不行,我的電腦是2000呀,現在我用的web服務器也是2000一樣不可以。
etherealkite 2008-06-12
  • 打赏
  • 举报
回复
我记得了,好像服务器与客户端要是同一个系统才行,都是XP或者都是2000,XP的日期数据传到2000上日期数据会变成‘1900-01-01’
postfxj 2008-06-12
  • 打赏
  • 举报
回复
應該不是的,如果我把我本機當webservice服務器,服務用相同的服務,也用的是上面的提交代碼,不會出錯。
etherealkite 2008-06-12
  • 打赏
  • 举报
回复
是因为反序列化解压缩的那个控件的问题不?不用那个控件试试看。
postfxj 2008-06-12
  • 打赏
  • 举报
回复
我的保存方法如下.

public static bool UpdateDataBase(byte[] bytDS, string[] tableName, string[] tempSql)
{
DataSet ds = new DataSet();
ds = serverbase.DecompressDS(bytDS);
SqlConnection conn = new SqlConnection(connstring);
conn.Open();
SqlTransaction tran = conn.BeginTransaction();
try
{
for (int i = 0; i < tableName.Length; i++)
{
SqlCommand cmd = new SqlCommand(tempSql[i], conn);
cmd.Transaction = tran;
SqlDataAdapter da = new SqlDataAdapter(cmd);
SqlCommandBuilder bld = new SqlCommandBuilder(da);
da.Update(ds.Tables[tableName[i]]);
}
ds.AcceptChanges();
tran.Commit();
return true;
}
catch
{
tran.Rollback();
throw;
}
}

利用 SqlCommandBuilder生成sql代碼,利用 SqlDataAdapter 進行數據提交。我這是用非類型化數據集進行數據提交。
如果我定制類型化數據集日期為空時不會報錯,能成功保存。
postfxj 2008-06-12
  • 打赏
  • 举报
回复
頂一下。
postfxj 2008-06-12
  • 打赏
  • 举报
回复
搞定了
在web服务里面的保存过程中加上下面代:


foreach (DataRow dr in ds.Tables["XHMX"].Rows)//處理默認日期不在數據庫合法日期之內的出錯處理(空值默認日期)
{
if (Convert.ToDateTime(dr["XHMX_GMRQ"]).Year < 1900 || dr["XHMX_GMRQ"].ToString()=="")
{
dr["XHMX_GMRQ"] = DBNull.Value;
}
}
postfxj 2008-06-11
  • 打赏
  • 举报
回复
是不是.net處理日期為空時有bug呀。
postfxj 2008-06-11
  • 打赏
  • 举报
回复
我感覺是.net生成sql語句時出的錯,我用類型化數據集就不會出錯,非類型化的就出錯。
如果我的select 語句中沒有日期字段就不會有問題,因為cmdbuild不會為它產生sql語句,所以不會報錯。
不知類型化數據集是如何會不出錯的。
没落鬼族 2008-06-11
  • 打赏
  • 举报
回复
我也碰到过类似的问题,就是C#代码中给一个时间字段附空值或者不附值,数据库里面并不像我想象的那样也给空值,而是附了‘1900-01-01’. 请教高手为什么???o(∩_∩)o...
postfxj 2008-06-11
  • 打赏
  • 举报
回复
?也可以。
linux_ch 2008-06-11
  • 打赏
  • 举报
回复
?
postfxj 2008-06-11
  • 打赏
  • 举报
回复
自己頂。
postfxj 2008-06-11
  • 打赏
  • 举报
回复
不會的可以頂喲。
fxjpost 2008-06-11
  • 打赏
  • 举报
回复
我顶.
fxjpost 2008-06-11
  • 打赏
  • 举报
回复
给你顶.
fxjpost 2008-06-11
  • 打赏
  • 举报
回复
ding
postfxj 2008-04-01
  • 打赏
  • 举报
回复
代碼中跟本就沒有給它值,不給值就是空。
我用的是webservice來提交,如果把webservice放在我本機提交沒問題,如果webservice放在別的機子上就出現問題了。
因為我測試時是沒有問題的,所以我就把程序發布了,想不到用戶用時報錯。
我想就是webservice向sqlserver提交數據時,空日期字段給數據庫時不是空的有一個默認值,但數據庫不認。
加载更多回复(7)

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧