OleDbConnection  cn = new OleDbConnection(GetConnection(".", "master", "admin"));
            OleDbCommand cmd = new OleDbCommand("INSERT INTO pic(picname, pic) VALUES (@picname, @pic)", cn);
             OleDbParameter p1 = new OleDbParameter("@picname", OleDbType.VarChar, 50);
            p1.Value = filetype;
            OleDbParameter p2 = new OleDbParameter("@pic", OleDbType.Binary, photo.Length);
            p2.Value = photo;
            cmd.Parameters.Add(p1);
            cmd.Parameters.Add(p2);
            cn.Open();
            cmd.ExecuteNonQuery();
            cn.Close();
总是提示: @picname 要定义,大家看看错在那里了.

解决方案 »

  1.   

    OleDbParameter 的参数不支持命名参数,实际上只是一个占位符,你把"@"去掉再试试看.
      

  2.   

    改成如下的方式
    OLE DB .NET 提供程序使用标有问号 (?) 的定位参数,而不使用命名参数。OleDbCommand cmd = new OleDbCommand("INSERT INTO pic(picname, pic) VALUES (?,?)", cn);
                 OleDbParameter p1 = new OleDbParameter("P1", OleDbType.VarChar, 50);
                p1.Value = filetype;
                OleDbParameter p2 = new OleDbParameter("P2", OleDbType.Binary, photo.Length);
                p2.Value = photo;
                cmd.Parameters.Add(p1);
                cmd.Parameters.Add(p2);
                cn.Open();
                cmd.ExecuteNonQuery();
                cn.Close();
      

  3.   

    这样看看OleDbConnection  cn = new OleDbConnection(GetConnection(".", "master", "admin"));
    OleDbCommand cmd = new OleDbCommand("INSERT INTO pic(picname, pic) VALUES (?, ?)", cn);
    cmd.Parameters.Add("?", OleDbType.VarChar, 50).Value = filetype;
    cmd.Parameters.Add("?", OleDbType.Binary, photo.Length).Value = photo;
    cn.Open();
    cmd.ExecuteNonQuery();
    cn.Close();