问题:当我提交表单后就提示以下内容:
异常详细信息: 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; //这里错了
可怎么还这样呢?_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;
}
}
但是第一次录入还成功,可是再次录入时就出问题了,提示连接未关闭~~~~不知怎么解决,干脆就把这方法去掉了。。。
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
那这句
adb.ExecuteNonQuery("Mailbao_Booking", p);
中的 Mailbao_Booking 就应该是一条sql语句
#1
你是用了存储过程吗?
可怎么还这样呢?_cmd.CommandType = CommandType.Text; //这里错了
可怎么还这样呢?_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;
}
}
但是第一次录入还成功,可是再次录入时就出问题了,提示连接未关闭~~~~不知怎么解决,干脆就把这方法去掉了。。。
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
那这句
adb.ExecuteNonQuery("Mailbao_Booking", p);
中的 Mailbao_Booking 就应该是一条sql语句