Bonjour, je veux faire une recherche dans ma base par rapport à un ou des mots-clés tapés dans une textbox.
Mais j'obtiens une erreur me disant que mon nom de colonne est non valide, ce nom de colonne étant mon mot-clé...
Ma méthode addFilter:
Mon erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 public void AddFilter (string sqlField, string val, bool caseInsensitive, bool bAddQuotes, string filterOperator) { string cs = caseInsensitive ? " COLLATE SQL_Latin1_General_CP1_CI_AS " : ""; if (val != null) { if (val.IndexOf(',') == -1) { if (!_rowFilter.EndsWith(" and ")) _rowFilter += " and " + sqlField + cs + filterOperator + AddQuotes(val, bAddQuotes) + " and "; else _rowFilter += sqlField + cs + filterOperator + AddQuotes(val, bAddQuotes) + " and "; } else { //multiple values, comma separated string filter = "("; char[] separator = { ',' }; string[] vals = val.Split(separator); for (int i=0; i<vals.Length; i++) { filter += sqlField + cs + filterOperator + AddQuotes(vals[i], bAddQuotes) + " or "; } _rowFilter += filter.Substring(0, filter.Length-4) + ") and "; } } }
L'appel à ma Proc Stockée:Erreur lors de l'exécution de la commande de type StoredProcedure sur la base SQL Serveur : Nom de colonne non valide : 'test'.
Merci d'avance à tous ceux qui s'intéresseront à la question.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 public static DataTable GetTicketsByKeywords (int maxResults, string rowFilter, int userId) { DataSet obj = null; SQLServerManager sql = new SQLServerManager(System.Configuration.ConfigurationManager.ConnectionStrings["ticketmanager"].ConnectionString); List<System.Data.SqlClient.SqlParameter> parameters = new List<SqlParameter>(); parameters.Add( new SqlParameter("@maxResults",maxResults) ); parameters.Add(new SqlParameter("@rowFilter", rowFilter)); parameters.Add(new SqlParameter("@userId", userId)); try { return sql.ExecuteDataTable("TCK_SP_GetKeywordTickets", ref parameters); //obj = dbSQL.ExecuteDataSet(dbCommand); } catch (DBConnectionException) { throw; } catch (Exception ex) { throw new TicketDataLayerException(ex); } finally { if (sql != null) sql.Close(); } }
Erazion.
Partager