2011-08-09 3 views
3

Salut les gars. J'utilise la requête ci-dessous pour exécuter une instruction sql. Cela fonctionne très bien. Je souhaite savoir comment je peux modifier la requête à sélectionner par une date que l'utilisateur entre dans ASP.NET. Cela signifie que je dois modifier la partie:sélectionner par date entré par l'utilisateur

WHERE TRANSACTION_DATE = '02-AUG-2006' 

Toutes les idées s'il vous plaît? Merci pour votre aide

QUERY J'UTILISE

INSERT INTO TRANSACTION (TRX_UNIT, TRX_DATE, TRX_USR) 
SELECT SOURCE_SYSTEM_CHANNEL_CODE, TRANSACTION_DATE, USER_CODE 
FROM FCR_TRANSACTION 
WHERE TRANSACTION_DATE = '02-AUG-2006' 

Répondre

6

Qu'en est-:

// Create a connection object and data adapter 
MySqlConnection cnx = new MySqlConnection(connectionString); 

// Create a SQL command object 
string cmdText = "INSERT INTO TRANSACTION (TRX_UNIT, TRX, TRX_USR) "; 
cmdText += "SELECT SOURCE_SYSTEM_CHANNEL_CODE, TRANSACTION_DATE, USER_CODE "; 
cmdText += "FROM FCR_TRANSACTION "; 
cmdText += "WHERE TRANSACTION_DATE = @TransactionDate"; 

MySqlCommand cmd = new MySqlCommand(cmdText, cnx); 
cmd .Parameters.Add("@TransactionDate", YourDate); // <-- Insert date here 
// Set the command type to text 
cmd.CommandType = CommandType.Text; 
cmd.ExecuteNonQuery(); 
+1

+1: Première réponse, et il a une requête paramétrée! Wooooo! :) – MatBailie

+0

bien sûr, en utilisant autre chose est juste stupide :). Mais je ne suis pas sûr que ça compile, mais il devrait utiliser quelque chose comme ça. –

0

vous devez avoir un nom pour le champ de date à laquelle l'utilisateur entre une date. disons que vous décidez de le nommer 'datename' après que le $ _POST ("datename") retourne le texte entré dans le champ. maintenant l'instruction où devient

WHERE TRANSACTION_DATE = '$_POST("datename")' 

si cela ne fonctionne pas, essayez

WHERE TRANSACTION_DATE = $_POST("datename") 

tout cela suppose que vous gardé la méthode de transfert de forme comme POST .... si vous avez comme GET, il suffit de remplacer $ _POST par $ _GET ici.

Cela devrait fonctionner. Si ce n'est pas le cas, mes excuses.

+1

On dirait PHP pour moi, pas ASP.NET? – MatBailie

+1

De plus, désinfectez toujours vos entrées DB. Je sais que c'est un exemple de code, mais tirer des valeurs brutes directement à partir de variables serveur dans des chaînes SQL comme c'est très dangereux. –

0

Si vous voulez vraiment interroger par la date exacte, vous devez valider le UserInput, et ajouter un paramètre à la requête (ce n'est pseudocode):

 string userInput = txtDate.Text; 
     DateTime parsedDate; 
     if (DateTime.TryParse(userInput, out parsedDate)) { 
      // valid date, add a Parameter to your command 
      var cmd = ... // create your DB Command here 
      cmd.CommandText = "SELECT .... WHERE Transaction_Date = @txDate"; 
      cmd .Parameters.Add("@txDate", parsedDate); 
      // execute your command ... 
     } 
Questions connexes