2017-09-26 2 views
0

Bonjour à tous Je crée une application web simple qui utilise la webcam des utilisateurs et/ou vous permet de télécharger des photos. S'il vous plaît ignorer l'erreur dans les images, c'est fait exprès.Le stockage des octets d'images dans la base de données ne fonctionne pas

je reçois les octets de l'image comme ceci:

enter image description here

Maintenant, je veux entrer dans ma base de données avec l'image type de données SQL. Dans ma couche d'accès aux données, j'ai des paramètres qui ressemblent à ceci:

enter image description here.

public int AddParam(string ParamName, byte[] pic) 
    { 
     return AddParam(ParamName, pic); 

    } 

Je les ai saisies et ont essayé de l'exécuter comme ceci:

enter image description here

DataAccessLayer DataAccessLayer = new DataAccessLayer()  
DataAccessLayer.PictureCaptured(dlStudentID.SelectedValue.ToString(),imgByte.ToArray()); 
           DataSet ds = new DataSet(); 
           DataAccessLayer .WebExecute(out ds); 

Il me donne une erreur comme ceci: enter image description here

Je ne comprends pas pourquoi il est en train de faire ça.

S'il vous plaît laissez-moi savoir si vous avez des conseils ou des réponses à celui-ci.

Merci beaucoup.

+1

Ne postez pas les images de votre code, incluez le code actuel et mettez-le en surbrillance et appuyez sur le bouton {{} 'pour le formater. Aussi, qu'est-ce que vous attendez de la fonction 'AddParam' à faire? Quelle fonction pensez-vous qu'il appelait, et montrer cette fonction. –

+0

S'il s'agit de ** SQL Server **: le type de données 'image' sera supprimé dans une future version de SQL Server. Évitez d'utiliser ces types de données dans les nouveaux travaux de développement et prévoyez de modifier les applications qui les utilisent actuellement. Utilisez 'varbinary (max)' à la place. [Voir les détails ici] (http://msdn.microsoft.com/en-us/library/ms187993.aspx) –

Répondre

0

Utilisez cette méthode pour l'image convertir en octets,

public byte[] ImageToByte(string imageLocation) 
{ 
    byte[] imageData = null; 
    FileInfo fileInfo = new FileInfo(imageLocation); 
    long imageFileLength = fileInfo.Length; 
    FileStream fs = new FileStream(imageLocation, FileMode.Open, FileAccess.Read); 
    BinaryReader br = new BinaryReader(fs); 
    imageData = br.ReadBytes((int)imageFileLength); 
    return imageData; 
} 
+0

Je n'ai pas l'emplacement d'image que je ne l'enregistre pas où je tourne juste le dossier choisi dans Buytes; –

0

Si je devais deviner, la méthode AddParams appelle lui-même à plusieurs reprises et encore ce qui est la raison pour laquelle vous avez reçu un StackOverflowException: https://msdn.microsoft.com/en-us/library/system.stackoverflowexception(v=vs.110).aspx

+0

Donc, avec quel code puis-je le faire seulement appeler lui-même une fois que je pourrais avoir plusieurs poussettes trop –

+0

Je pense que vous pouvez jeter un oeil à ceci: https://msdn.microsoft.com/en-us/library/system .data.sqlclient.sqlcommand.parameters (v = vs.110) .aspx J'ai le sentiment que vous essayez de créer un objet SqlCommand. Vous voulez ajouter votre objet à la propriété de l'objet SqlCommand Paramètres –