读书人

何c#中向Access安插不了日期

发布时间: 2011-12-26 23:09:58 作者: rapoo

何c#中向Access插入不了日期?
我在接access插入一句出"算式的料型不符合。"
行成功的句如下:
string myconning = "provider=microsoft.jet.oledb.4.0;data source=F://djp/rh/gs_attn.mdb";
OleDbConnection myconn = new OleDbConnection(myconning);
string sqladd = "insert into clock_card (card_id,card_date,card_time,card_clock,collect_date,card_flag) ";
sqladd += "values ('" + (this.txbid.Text.Trim()) + "','2008-04-18',";
sqladd += "'" + (this.txbtime.Text.Trim()) + "','001','2008-04-19 上午 08:24','N')";
OleDbDataAdapter oleda_add = new OleDbDataAdapter(sqladd, myconn);
DataSet mydata_add = new DataSet();
oleda_add.Fill(mydata_add);
...
以上句插入成功,因日期想窗口取值,改:
sqladd += "values ('" + (this.txbid.Text.Trim()) + "','" + (this.txbdate.Text.Trim ()) + "',";
sqladd += "'" + (this.txbtime.Text.Trim()) + "','001','" + (this.txbcollect.Text.Trim()) + "','N')";
後插入句出:"算式的料型不符合。"

以上只是'2008-04-18'(access字段:card_date格式:短日期)改:'" + (this.txbdate.Text.Trim ()) + "';'2008-04-19 上午 08:24'(access字段:collect_date格式:通用日期)改:'" + (this.txbcollect.Text.Trim()) + "'
後就出,所以不知何因,望各位高手指教,了

[解决办法]
问题应该在:this.txbdate.Text.Trim() 的Trim()!
TRIM将得到这样的字符:2008-04-19上午08:24,这肯定不能转换到日期格式了!
[解决办法]
access数据库中日期类型应使用##包围日期,例:#2008-9-8#。
[解决办法]
'2008-04-19 08:24'肯定是可以写入的! 不知道为什么还要加个"上午".

还有为什么不用参数呢? 很少见到用TextBox来编辑DateTime类型的.

[解决办法]
试试
"values ('" + (this.txbid.Text.Trim()) + "',#" + this.txbdate.Text.Trim() + " 0:00:00#,...)"

[解决办法]
sql语句插入、更新日期时,得根据不同的数据库要求定义日期字符串。
最好是通过C#的参数方式,将日期写入

例如:
表:table1
字段:ID, collect_date

System.Data.OleDb.OleDbDataAdapter oleda_add;
oleda_add.SelectCommand.CommandText = "Insert Into table1 (ID, collect_date) Values(?, ?)";
oleda_add.SelectCommand.Parameters.Add("ID", 1);
oleda_add.SelectCommand.Parameters.Add("collect_date", DateTime.Now);
oleda_add.SelectCommand.ExecuteNonQuery();

读书人网 >C#

热点推荐