在我的一個程式裡遇到這樣一個問題?
在資料庫中的某個欄位類型為 datetime
頁面上對應該欄位的為一個text文本輸入框,意思是輸入時間。
string strId =txtId.Text.Trim();
string strName=txtName.Text.Trim();
string strPwd=txtPwd.Text.Trim();
string strExpiry=txtTime.Text.Trim(); //時間
System.Data.SqlClient.SqlParameter []parmCustomers = new SqlParameter[3];
parmCustomers[0] = new SqlParameter( "@C_Id", strId );
parmCustomers[1] = new SqlParameter( "@Name", strName );
parmCustomers[2] = new SqlParameter( "@Pwd", strPwd );
parmCustomers[3] = new SqlParameter("@Date",strExpiry);//如果現文本裡沒有輸入時間
SqlServerDatabase obj = new SqlServerDatabase();
if ( obj.RunProc( "proc_AddUser", parmCustomers ) == 1 ) // 添加成功
{
Response.Write("<script type='text/javascript'>alert('Add Success!')</script>");
}
上段程式當然可以添加成功,
問題是當txtTime.Text什麼都沒輸入的時候,資料庫中的這個欄位仍然會儲存 1900-01-01 00:00:00.000
於是我就在parmCustomers[3] = new SqlParameter("@Date", " " )寫入Null 字元串 或是 null ,可問題插入後資料庫裡還是顯示1900-01-01
以下是解決辦法:
於是加了判斷: //注 資料庫裡時間欄位要設定永許為空白
string strExpiry=this.txtTime.Text.Trim();
System.Data.SqlClient.SqlParameter []parmCustomers = new SqlParameter[3];
parmCustomers[0] = new SqlParameter( "@C_Id", strId );
parmCustomers[1] = new SqlParameter( "@Name", strName );
parmCustomers[2] = new SqlParameter( "@Pwd", strPwd );
if(strExpiry.ToString()=="")
{
parmCustomers[3] = new SqlParameter("@Date",DBNull.Value);//如果文字框的時間為空白的話就吧 strExpiry 改為 DBNull.Value 就OK了
}
else
{
parmCustomers[3] = new SqlParameter("@Date",strExpiry);//有值時
}
SqlServerDatabase obj = new SqlServerDatabase();
if ( obj.RunProc( "proc_AddUser", parmCustomers ) == 1 ) // 添加成功
{
Response.Write("<script type='text/javascript'>alert('Add Success!')</script>");
}
如果是Sql語句直接插入的話
insert into AddUser (name,pwd)values('test','123')
date欄位 就不要寫入到插入的Sql語句裡 這樣資料庫裡的值就為空白了。。。