当前位置:编程学习 > C#/ASP.NET >>

Asp.net+Access数据库插入和修改问题

老大们帮帮忙啊
查询,删除都可以
插入报错 报查询的数目和目标字段中的数目不同
下面是我的代码
 protected void Button1_Click(object sender, EventArgs e)
    {
        RuimModel.News newsModel = new RuimModel.News();
        RuimBll.News newsBll = new RuimBll.News();
        string newsTitle = this.Title.Text.ToString ();
        string newsType = this.newstype.Text;
        string newsCentent = this.Content.Value;
        newsModel.NewsTitle = newsTitle;
        newsModel.NewsType = newstype.ToString();
        newsModel.NewsContent = newsCentent.ToString();
        newsModel.NewsTime = DateTime.Now;
        if (newsBll.add(newsModel))
        {
            Response.Write("<script languge='javascript'>alert('添加成功!');window.location.href='Newslist.aspx';</script>");
        }
        else
        {
            Response.Write("<script languge='javascript'>alert('sorry,添加失败!')</script>");
        }
    }


 public bool add(RuimModel.News newsModel)
        {
            string sql = "insert into News values(@NewsTitle,@NewsType,@NewsContent,@NewsTime)";
            OleDbParameter[] parameter = new OleDbParameter[]
            {
                new OleDbParameter("@NewsTitle",newsModel.NewsTitle),
                new OleDbParameter("@NewsType",newsModel.NewsType),
                new OleDbParameter("@NewsContent",newsModel.NewsContent),
                new OleDbParameter("@NewsTime",newsModel.NewsTime)
       
            };
            int num = OleDBHelper.ExecuteSql(sql, parameter);
            if (num > 0)
            {
                newsModel.ID = num;
            }
            return num > 0 ? true : false;
        }


 public static int ExecuteSql(string SQLString, params OleDbParameter[] cmdParms)
        {
            using (OleDbConnection connection = new OleDbConnection(connectionString))
            {
                using (OleDbCommand cmd = new OleDbCommand())
                {
                    try
                    {
                        PrepareCommand(cmd, connection, null, SQLString, cmdParms);
                        int rows = cmd.ExecuteNonQuery();
                        cmd.Parameters.Clear();
                        return rows;
                    }
                    catch (System.Data.OleDb.OleDbException E)
                    {
                        throw new Exception(E.Message);
                    }
                }
            }
        }
--------------------编程问答-------------------- 查询,删除都可以
插入报错 报查询的数目和目标字段中的数目不同
------------------------
应该是语句的问题。 --------------------编程问答-------------------- string sql = "insert into News values(@NewsTitle,@NewsType,@NewsContent,@NewsTime)";
------------------------
news 是你要插入数据的表是吧。
这个样写, 倒是挺省事的,但是不利于以后修改。 --------------------编程问答--------------------   string sql = "insert into News values(@NewsTitle,@NewsType,@NewsContent,@NewsTime)";
还是没有看到问题。
把你 news表的 字段和类型 复制出来看看
  string sql = "insert into News(xx,xx,xx) values(@NewsTitle,@NewsType,@NewsContent,@NewsTime)";
--------------------编程问答--------------------   string sql = "insert into News values(@NewsTitle,@NewsType,@NewsContent,@NewsTime)";
断点调试一下,到这个语句的时候,看看这个值多少,复制下来,在查询分析器中,运行一下,是否有问题 --------------------编程问答-------------------- 这是数据库news表
字段名称     类型
ID         自动编号 
NewsTitle  文本
NewsType   文本
NewsContent  备注
NewsTime    日期/时间 --------------------编程问答-------------------- 这是News表
字段名称            数据类型
ID                自动编号
NewsTitle         文本
NewsType          文本
NewsContent       备注
NewsTime          日期/时间 --------------------编程问答-------------------- cmd.Parameters.Clear();
PrepareCommand(cmd, connection, null, SQLString, cmdParms);
int rows = cmd.ExecuteNonQuery();

               --------------------编程问答-------------------- 当数据表里有自动编号类型的字段时,insert语句里values前面必须跟上字段名,否则在.net里会报错:
insert into TableName (字段1,字段2,...,字段n) values(字段1的值,字段2的值,...,字段n的值)
要这样写,其中自动编号类型的不用写参数。
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,