問個日期類型數據提交到數據庫時報錯 ,急。 我一字段日期類型允許為空,新增數據日期類型給它是空數據,但提交後報不在日期范圍之類,為何。 如何解決 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 to_date('','YYYY-MM-DD')转换一下试一试 新增數據日期類型給它是空數據? 你是給他空數據的嗎?這樣好像不行 ,如果控件里沒有數據 就setnull,不要付空的字串 代碼中跟本就沒有給它值,不給值就是空。我用的是webservice來提交,如果把webservice放在我本機提交沒問題,如果webservice放在別的機子上就出現問題了。因為我測試時是沒有問題的,所以我就把程序發布了,想不到用戶用時報錯。我想就是webservice向sqlserver提交數據時,空日期字段給數據庫時不是空的有一個默認值,但數據庫不認。 是不是.net處理日期為空時有bug呀。 我也碰到过类似的问题,就是C#代码中给一个时间字段附空值或者不附值,数据库里面并不像我想象的那样也给空值,而是附了‘1900-01-01’. 请教高手为什么???o(∩_∩)o... 我感覺是.net生成sql語句時出的錯,我用類型化數據集就不會出錯,非類型化的就出錯。如果我的select 語句中沒有日期字段就不會有問題,因為cmdbuild不會為它產生sql語句,所以不會報錯。不知類型化數據集是如何會不出錯的。 我的保存方法如下. 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 進行數據提交。我這是用非類型化數據集進行數據提交。如果我定制類型化數據集日期為空時不會報錯,能成功保存。 應該不是的,如果我把我本機當webservice服務器,服務用相同的服務,也用的是上面的提交代碼,不會出錯。 我记得了,好像服务器与客户端要是同一个系统才行,都是XP或者都是2000,XP的日期数据传到2000上日期数据会变成‘1900-01-01’ 同是2000也不行,我的電腦是2000呀,現在我用的web服務器也是2000一樣不可以。 to etherealkite 你的QQ號是多少呀。 搞定了在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; } } winform程序中进度条跑不满就跳到另一个页面 Winform 里面选取点 连线 TCP/UDP 协议问题 DirectShow 视频控制问题 业务查询 自己建的一个DataTable怎样绑定到DataGrid ? 请问代码二是否解决了代码一的问题(里面有详细的代码)??? 谢谢! 红星们、高手们、进来帮我看看呀,这问题搞的我头痛,一定结贴 + 加赠分500 VS2010不编译直接运行 picturebox上如何添加文字(C#) 又来C#读取INI问题 C#中如何能够把一个24位位图转换为16位的位图?
這樣好像不行 ,如果控件里沒有數據 就setnull,不要付空的字串
我用的是webservice來提交,如果把webservice放在我本機提交沒問題,如果webservice放在別的機子上就出現問題了。
因為我測試時是沒有問題的,所以我就把程序發布了,想不到用戶用時報錯。
我想就是webservice向sqlserver提交數據時,空日期字段給數據庫時不是空的有一個默認值,但數據庫不認。
如果我的select 語句中沒有日期字段就不會有問題,因為cmdbuild不會為它產生sql語句,所以不會報錯。
不知類型化數據集是如何會不出錯的。
{
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 進行數據提交。我這是用非類型化數據集進行數據提交。
如果我定制類型化數據集日期為空時不會報錯,能成功保存。
你的QQ號是多少呀。
在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;
}
}