在线急求帮忙:System.Data.OleDb.OleDbException: 无效的 SQL语句??

时间:2021-08-04 18:38:51
请路过的大侠帮忙,先谢谢了。
问题:当我提交表单后就提示以下内容:


异常详细信息: System.Data.OleDb.OleDbException: 无效的 SQL语句;期待 'DELETE'、'INSERT'、'PROCEDURE'、'SELECT'、或 'UPDATE'。

源错误: 

行 66:         _cmd = CreateCommand(sql, prams);
行 67:         _cmd.CommandType = CommandType.Text;
行 68:         i = _cmd.ExecuteNonQuery();
行 69:         _cmd.Parameters.Clear();
行 70:         _conn.Close();


提交事件代码如下-----------
    protected void Button1_Click(object sender, EventArgs e)
    {
        int webTypeID = System.Convert.ToInt32(this.DropDownList1.SelectedValue);
        int designType = System.Convert.ToInt32(this.DropDownList2.SelectedValue);
        string WebUrl1 = this.WebUrl1.Text;
        string WebUrl2 = this.WebUrl1.Text;
        string WebUrl3 = this.WebUrl1.Text;
        string Info = this.Info.Text;
        string Company = this.Company.Text;
        string contactor = this.poster.Text;
        string TEL = this.TEL.Text;
        string Email = this.Email.Text;  //获取电子邮件
        string Address = this.Address.Text;
        string cash = this.cash.Text;
        System.Data.OleDb.OleDbParameter[] p ={
                                                   adb.MakeParam("@ID",User.Identity.Name),
                                                   adb.MakeParam("@webTypeID",webTypeID),
                                                    adb.MakeParam("@designType",designType),
                                                     adb.MakeParam("@WebUrl1",WebUrl1),
                                                      adb.MakeParam("@WebUrl2",WebUrl2),
                                                       adb.MakeParam("@WebUrl3",WebUrl3),
                                                        adb.MakeParam("@Info",Info),
                                                         adb.MakeParam("@Company",Company),
                                                          adb.MakeParam("@contactor",contactor),
                                                           adb.MakeParam("@TEL",TEL),
                                                            adb.MakeParam("@Email",Email),
                                                             adb.MakeParam("@Address",Address),
                                                              adb.MakeParam("@cash",cash),
                                               };
        adb.ExecuteNonQuery("Mailbao_Booking", p);
        sys.Alert("订单提交成功!");
    }



调用公类方法如下-----------
    public static int ExecuteNonQuery(string sql, OleDbParameter[] prams)
    {
        int i = 0;
        _cmd = CreateCommand(sql, prams);
        _cmd.CommandType = CommandType.Text;
        i = _cmd.ExecuteNonQuery();
        _cmd.Parameters.Clear();
        _conn.Close();
        return i;
    }



这错误应该如何解决???

另外,如果我不用这种方法录入数据的话,那还有什么好的简单的公用方法可以调用??

6 个解决方案

#1


你是用了存储过程吗?
可怎么还这样呢?_cmd.CommandType = CommandType.Text; //这里错了

#2


应该是改成这样:

_cmd.CommandType = CommandType.StoredProcedure;

#3


楼上两位前辈,我用的是ACCESS数据库,所以不能用你们说的存储过程~~~~如果就这个方法来改的话,要如何改?另外,有没有更直接简单的公用类方法来调用?恳请指教......

#4


另外,我自己用过这样的方法来调用
public bool adlData(string sql)
    {
        OleDbConnection Odbc = createCon();
        Odbc.Open();
        OleDbCommand com = new OleDbCommand(sql, Odbc);
        int i = Convert.ToInt32(com.ExecuteNonQuery());
        Odbc.Close();
        if (i > 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

但是第一次录入还成功,可是再次录入时就出问题了,提示连接未关闭~~~~不知怎么解决,干脆就把这方法去掉了。。。

#5


怎么没人给我解决的,汗~~~~  看来只能另定一个类文件,免得与原来的类文件冲突来解决好了。。。。

#6


引用 3 楼 mailbao 的回复:
楼上两位前辈,我用的是ACCESS数据库,所以不能用你们说的存储过程~~~~如果就这个方法来改的话,要如何改?另外,有没有更直接简单的公用类方法来调用?恳请指教......

那这句
adb.ExecuteNonQuery("Mailbao_Booking", p);
中的 Mailbao_Booking 就应该是一条sql语句

#1


你是用了存储过程吗?
可怎么还这样呢?_cmd.CommandType = CommandType.Text; //这里错了

#2


应该是改成这样:

_cmd.CommandType = CommandType.StoredProcedure;

#3


楼上两位前辈,我用的是ACCESS数据库,所以不能用你们说的存储过程~~~~如果就这个方法来改的话,要如何改?另外,有没有更直接简单的公用类方法来调用?恳请指教......

#4


另外,我自己用过这样的方法来调用
public bool adlData(string sql)
    {
        OleDbConnection Odbc = createCon();
        Odbc.Open();
        OleDbCommand com = new OleDbCommand(sql, Odbc);
        int i = Convert.ToInt32(com.ExecuteNonQuery());
        Odbc.Close();
        if (i > 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

但是第一次录入还成功,可是再次录入时就出问题了,提示连接未关闭~~~~不知怎么解决,干脆就把这方法去掉了。。。

#5


怎么没人给我解决的,汗~~~~  看来只能另定一个类文件,免得与原来的类文件冲突来解决好了。。。。

#6


引用 3 楼 mailbao 的回复:
楼上两位前辈,我用的是ACCESS数据库,所以不能用你们说的存储过程~~~~如果就这个方法来改的话,要如何改?另外,有没有更直接简单的公用类方法来调用?恳请指教......

那这句
adb.ExecuteNonQuery("Mailbao_Booking", p);
中的 Mailbao_Booking 就应该是一条sql语句