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

C#菜鸟求助,关于winform的listView添加删除数据出现的问题

各位大侠,小弟刚学C#不久,在对listView添加删除数据出现时出现"未处理OleDbException,INSERT INTO语句的语法错误"问题
    void ButtonAddClick(object sender, EventArgs e)
    {
    StringBuilder strErrorMsg = new StringBuilder();
    if (!Validator.checkRequired(this.textBoxName.Text))
    {strErrorMsg.Append("分类不能为空\n");}
    if (!Validator.checkRequired(this.textBoxUsername.Text))
    {strErrorMsg.Append("用户名不能为空\n");}
    if (!Validator.checkRequired(this.textBoxPassword.Text))
    {strErrorMsg.Append("密码不能为空\n");}
    if (strErrorMsg.Length > 0)
    {MessageBox.Show(strErrorMsg.ToString(), "出错提示");
     return;}
    Product p = new Product();
    p.Name = this.textBoxName.Text.Trim();
    p.Username = this.textBoxUsername.Text.Trim();
    p.Password = this.textBoxPassword.Text.Trim();
    int id = ProductDao.insert(p);
    this.textBoxId.Text = id.ToString();
    p = ProductDao.getById(id);
    AddProduct(p);
    }
    private void AddProduct(Product p)
    {
    ListViewItem lvi = this.listView1.Items.Add(p.Id.ToString());
    lvi.SubItems.Add(p.Name);
    lvi.SubItems.Add(p.Username.ToString());
    lvi.SubItems.Add(p.Password.ToString());
    }


    public static int insert(Product p)
    {
    string sql = "insert into [user_cate](cate_name,username,password)values(?,?,?);";
    OleDbParameter[] parameters = new OleDbParameter[3];
    parameters[0] = new OleDbParameter("@cate_name", OleDbType.VarChar, 50);
    parameters[0].Value = p.Name;
    parameters[1] = new OleDbParameter("@username", OleDbType.VarChar, 50);
    parameters[1].Value = p.Username;
    parameters[2] = new OleDbParameter("@password", OleDbType.VarChar, 50);
    parameters[2].Value = p.Password;
    return AccessDBUtil.ExecuteInsert(sql,parameters);
    }


    public static int ExecuteInsert(string sql, OleDbParameter[] parameters)
    {
    using (OleDbConnection connection = new OleDbConnection(connectionString))
    {
    OleDbCommand cmd = new OleDbCommand(sql, connection);
    OleDbDataAdapter oleSub = new OleDbDataAdapter(sql, connection);
    OleDbCommandBuilder cb1 = new OleDbCommandBuilder(oleSub);
    try
    {
    connection.Open();
    if (parameters != null) cmd.Parameters.AddRange(parameters);
    cmd.ExecuteNonQuery();
    cmd.CommandText = @"select @@identity";
    int value = Int32.Parse(cmd.ExecuteScalar().ToString());
    return value;
    }
    catch (Exception e)
    {
    throw e;
    }
    }
    } --------------------编程问答-------------------- --------------------编程问答-------------------- 求助求助求助 --------------------编程问答-------------------- 继续等待着 --------------------编程问答-------------------- 语法错误,是不是跟你用的数据库有关~ --------------------编程问答-------------------- 我用的是access数据库 --------------------编程问答--------------------   string sql = "insert into [user_cate](cate_name,username,password)values(?,?,?);";
    好像是多了个;符号倒数第二个 --------------------编程问答--------------------        直接删除数据库! --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- string sql = "insert into [user_cate](cate_name,username,password)values(@cate_name,@username,@password)";

这样么? --------------------编程问答-------------------- 6楼和10楼的方法都试了,问题依然存在 --------------------编程问答-------------------- 求助求助求助 --------------------编程问答--------------------
1.在values前要有空格
2.去掉倒数第二个";"号 --------------------编程问答-------------------- 未处理OleDbException,INSERT INTO语句的语法错误"问题


已经是很清晰的异常提示信息了!注意insert语法规则 在下面这句代码前加上断点

string sql = "insert into [user_cate](cate_name,username,password)values(?,?,?);";

逐步执行看看赋值后的SQL到底是什么内容  把它复制出来放到SQL查询分析器里跑跑  看看跑的通么

遇到错误首先要想到如何找出错误,然后再排除错误,异常信息很重要! --------------------编程问答-------------------- 你的sql语句写错了,改对就好了!! --------------------编程问答-------------------- 一个抛砖引玉的问题,坐等优秀的解决方案 --------------------编程问答-------------------- MSDN --------------------编程问答-------------------- 你的SQL语句写错了,建议你用sqlparameters --------------------编程问答-------------------- string sql = "insert into [user_cate]([cate_name],[username],[password])values(?,?,?)";
--------------------编程问答--------------------
引用 14 楼 dasheen919 的回复:
未处理OleDbException,INSERT INTO语句的语法错误"问题


已经是很清晰的异常提示信息了!注意insert语法规则 在下面这句代码前加上断点

string sql = "insert into [user_cate](cate_name,username,password)values(?,?,?);";

逐步执行看看赋值后的SQL到底是什么内容 把它复制……

赞同,楼主这种问题你得会自己调试,这个调试也不是很麻烦,只有自己调试了找到了问题点这样记忆才深刻。如果不是很明白最好找个明白的人看看人家是怎么调试的。 --------------------编程问答-------------------- 问题已经自己给解决了,只是因为username\password是保留词
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,