关于Access数据库(2003)的增删改查,其实和Sql大体差不多,但是还有很多不一样的地方。下面列几个容易犯的错误:
1、Access数据库的位置:
conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|/SingleArticle.mdb;Jet OLEDB:Database Password=");
↓
↓
这个是数据库的相对路径,要建立个App_Data的文件夹,放在项目的根目录下,专门用来存放Access数据库
2、对于Access的查询语句
public SingleArticleData Xiangxi() //查询Access数据库的内容 { SingleArticleData data = null; conn.Open(); cmd.CommandText = "Select * from SingleArticles "; OleDbDataReader dr = cmd.ExecuteReader(); data = new SingleArticleData(); if(dr.HasRows) { dr.Read(); data.Name = dr["Name"].ToString(); data.ZhengWen = dr["Zhengwen"].ToString(); data.Times =Convert.ToDateTime( dr["Times"]); } conn.Close(); return data; }
和SQL的一样。
3、对于Access数据库中时间类型的修改
public void Update(int code,string name,string zhengwen,DateTime Times) { conn.Open(); cmd.CommandText = "Update SingleArticles set Name=@name ,ZhengWen=@zhengwen, Times=#"+Times+"# where Code="+code+""; cmd.Parameters.Clear(); cmd.Parameters.Add("@name",name); cmd.Parameters.Add("@zhengwen",zhengwen); cmd.ExecuteNonQuery(); conn.Close(); }
这里 的时间类型 一定要加上##,不然会提示 与数据库的类型不符合!!
4、对于Access数据库中时间类型的增加,以及自动编号的增加。
在Access中,自增长类型要设成"自动编号"的,但是在增加语句中,也要加上这个编号,而且是string类型的,这个编号要通过先查询Access表中编号最大的那条数据,然后新增加的编号便是这个编号+1就行了 ,最好别用占位符!!! 还有时间Insert语句中 不用加'',要加##。
public void Insert(string code,string name,string zhengwen,DateTime time,string type,string zuozhe) //增加 { conn.Open(); cmd.CommandText = "Insert into Articles values('"+code+"','"+name+"','"+zhengwen+"',#"+time+"#,'"+type+"','"+zuozhe+"')";; cmd.ExecuteNonQuery(); conn.Close(); }
protected void Button2_Click(object sender, EventArgs e) //获取数据后发布新闻 { string name = TextBox1.Text; string zhengwen = WebEditor1.Text; string type = TextBox2.Text; string zuozhe = TextBox3.Text; int code=new ArticlesBF().SelectLast().Code; int code1 = code + 1; new ArticlesBF().Insert(code1.ToString(),name,zhengwen,DateTime.Now,type,zuozhe); Response.Redirect("Articles.aspx"); }