string newstr=".......@INSQL..........";OdbcCommand cmd = new OdbcCommand(newStr, Connosql);
cmd.Parameters.AddWithValue("@INSQL", insSQL);
cmd.ExecuteNonQuery();为什么在执行的时候,会提示未声明的变量?
速度回了,在线等.解决就给分.
cmd.Parameters.AddWithValue("@INSQL", insSQL);
cmd.ExecuteNonQuery();为什么在执行的时候,会提示未声明的变量?
速度回了,在线等.解决就给分.
1.可能是你的C#代码使用了未声明的变量。(这种低级的错误不应该发生)。
2.是调用数据库存储过程时的异常。只能说明存储过程的变量不正确(存储过程中没有INSQL参数名称)。检查一下,若是正确的,请把"@INSQL"改成"INSQL"试试。
{
string sqlstr = @"insert into Products values(@ID,@Name,@Context,@Price)"; SqlParameter[] parameters =
{
new SqlParameter("@ID",SqlDbType.Char){Value=product.Product_ID},
new SqlParameter("@Name",SqlDbType.NVarChar){Value=product.Product_Name},
new SqlParameter("@Price",SqlDbType.Decimal){Value=product.Product_Price},
new SqlParameter("@Context",SqlDbType.NVarChar){Value=product.Product_Context}
};
return sqlhelp.ZexecuteNonQuery(parameters, sqlstr);
}
public string ZexecuteNonQuery(SqlParameter[] arge,string Comtext)
{
try
{
SqlCommand com = new SqlCommand(Comtext, conn);
com.Parameters.AddRange(arge);
conn.Open();
int State = com.ExecuteNonQuery();
if (State > 0)
{
return "执行操作成功!";
}
return "执行操作失败!";
}
finally
{ Closeconn();
}
}
这句中的insSQL是什么东西?请确保insSQL的值不为null或0还有,ODBC中使用什么方式连接到Sql Server的?如果是Ole驱动,那这句:string newstr=".......@INSQL..........";中的@INSQL得换成"?",下面改成:
cmd.Parameters.AddWithValue("P1", insSQL); 试试
inSQL
string insSQL="................"; //这个是一个字符串,准备给@INSQL的值
string newStr="..........@INSQL......";这个是拼接成的SQL语句,里面带参数@INSQLOdbcCommand cmd = new OdbcCommand(newStr, Connosql);//Connosql为ODBCConnection
cmd.Parameters.AddWithValue("@INSQL", insSQL);
cmd.ExecuteNonQuery();
OleDbParameter[] param = new OleDbParameter[1];
param[0] = new OleDbParameter("@INSQL", insSQL);
cmd.Parameters.AddRange(param);
参考:string queryString = "SELECT * FROM Table1 WHERE Field1 LIKE ?";
OdbcCommand command = new OdbcCommand(queryString, connection);
command.Parameters.Add("@p1", OleDbType.Char, 3).Value = "a";
OdbcDataReader reader = command.ExecuteReader();