Όταν καλείτε μια αποθηκευμένη διαδικασία σε ένα πρόγραμμα C#, μια περίεργη εξαίρεση String[3]: η ιδιότητα Size έχει μη έγκυρο μέγεθος 0.
Η αποθηκευμένη διαδικασία που έχει αυτό το πρόβλημα χαρακτηρίζεται από την παρουσία παραμέτρων τύπου varchar ή nvarchar
Ο ορισμός αυτής της παραμέτρου κατά τη στιγμή της κλήσης είναι παρόμοιος με SqlParameter para = νέα SqlParameter("@paraname", DBType.String);
Λύση: Η παράμετρος out πρέπει να έχει καθορισμένο μήκος, επομένως θα πρέπει να αρχικοποιηθεί ως εξής: SqlParameter para = νέα SqlParameter("@paraname", DBType.String, μέγεθος);
- DBHelper db = new DBHelper();
- SqlParameter[] param = new SqlParameter[5];
- param[0] = new SqlParameter("ID", SqlDbType.Int);
- param[0].Direction = ParameterDirection.Output;
- param[1] = new SqlParameter("UserID", userid);
- param[2] = new SqlParameter("UserName", SqlDbType.NVarChar, 50);
- param[2].Direction = ParameterDirection.Output;
- param[3] = new SqlParameter("Password", pass);
- param[4] = new SqlParameter("Result", SqlDbType.Int);
- param[4].Direction = ParameterDirection.Output;
- var spc = db.Crm_ExecuteNonQueryReturns("pUserLogin",param);
Αντιγραφή κώδικα
|