string newstr=".......@INSQL..........";OdbcCommand cmd = new OdbcCommand(newStr, Connosql);
cmd.Parameters.AddWithValue("@INSQL", insSQL);
cmd.ExecuteNonQuery();为什么在执行的时候,会提示未声明的变量?  
速度回了,在线等.解决就给分.     

解决方案 »

  1.   

    你写成 select * from tables where id = '"+id+"' 这样好了,要传的值这样传进去
      

  2.   

    就因为有特殊字符才用参数.1.2楼的PASS掉.
      

  3.   

    因你的代码贴出很少,只能作如下两点判断:
    1.可能是你的C#代码使用了未声明的变量。(这种低级的错误不应该发生)。
    2.是调用数据库存储过程时的异常。只能说明存储过程的变量不正确(存储过程中没有INSQL参数名称)。检查一下,若是正确的,请把"@INSQL"改成"INSQL"试试。
      

  4.   

    ERROR [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Must declare the scalar variable "@INSQL".执行到cmd.ExecuteNonQuery(); 报的错误
      

  5.   

    string newstr=".......INSQL.........."; 
      

  6.   

     public string Insertproduct(modeldepot.Product product)
            {
                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();
                }
            }
      

  7.   

    cmd.Parameters.AddWithValue("@INSQL", insSQL); 
    这句中的insSQL是什么东西?请确保insSQL的值不为null或0还有,ODBC中使用什么方式连接到Sql Server的?如果是Ole驱动,那这句:string newstr=".......@INSQL..........";中的@INSQL得换成"?",下面改成:
    cmd.Parameters.AddWithValue("P1", insSQL); 试试
      

  8.   

    cmd.Parameters.AddWithValue("@INSQL", insSQL); 
                                           inSQL
      

  9.   

    完整的再弄一次好了.
    string insSQL="................"; //这个是一个字符串,准备给@INSQL的值
    string newStr="..........@INSQL......";这个是拼接成的SQL语句,里面带参数@INSQLOdbcCommand cmd = new OdbcCommand(newStr, Connosql);//Connosql为ODBCConnection
    cmd.Parameters.AddWithValue("@INSQL", insSQL);
    cmd.ExecuteNonQuery(); 
      

  10.   

       把cmd.Parameters.AddWithValue("@INSQL", insSQL); 替换为:
           OleDbParameter[] param = new OleDbParameter[1];
             param[0] = new OleDbParameter("@INSQL", insSQL);
             cmd.Parameters.AddRange(param);
      

  11.   

    你的ODBC参数化错误。
    参考: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();