2009-08-02 9 views
-1

il y a une table == create table newstudent (inscription int, nom varchar2 (20), date DoJoin); dans C# quand je tapecomment peut-on enregistrer le langage DateTime C# dans la base de données oracle10g

oraclecommand(1,'amit purohit', DateTime.Now()); 
//Error found 'nvalid month' 
oraclecommand(1,'amit purohit', String.Format("{0:dd-MMM-yyyy}")); 
//problme that save only date into database but i need time also. like '11-AUG-2009 11:22:32.0' 
oraclecommand(1,'amit purohit', String.Format("{0:dd-MMM-yyyy hh:mm:ss}") 
//also error get like string picture format in date time values 
+0

Eh bien, nous avons aucune idée de ce que "oraclecommand" est. Ce que vous avez posté n'est pas valide, parce que 'amit purohit' n'est pas une chaîne valide (fausses citations). S'il vous plaît poster * code réel *. Idéalement, affichez un programme court mais complet (par exemple, une application de console) qui illustre le problème. –

Répondre

1

Vous devez utiliser une déclaration paramétrées, et ajouter un paramètre avec les données pertinentes, spécifiant le type de paramètre approprié. Le format exact de cela dépendra de quel pilote Oracle que vous utilisez, mais il est susceptible d'être quelque chose comme:

command.Parameters.Add(":date", OracleDbType.DateTime).Value = ...; 
0

Avez-vous vérifié standard date format

+5

Vous ne devez pas convertir votre DateTime en chaîne avant de l'insérer dans la base de données. Ce n'est pas nécessaire ni une bonne pratique. –

1

Essayez quelque chose comme ça (non testé code):

public void InsertDateTime(DateTime aoDateTime) { 
    using (var oracleConnection = new OracleConnection("<my connection string>")) 
    { 
    var oracleCommand = new OracleCommand(
     "INSERT INTO MY_TABLE (MY_DATE_FIELD) VALUES (:pMY_DATE_VALUE)", 
     oracleConnection); 
    oracleCommand.Parameters.Add(
     new OracleParameter(":pMY_DATE_VALUE", aoDateTime)); 

    oracleConnection.Open(); 
    oracleCommand.ExecuteNonQuery(); 
    } 
} 
3

Un de vos problèmes peut être le fait que votre date est dans le mauvais format pour Oracle.

Oracle accepte le format de date aaaa/mm/jj que je peux voir que vous n'utilisez pas.

Je suis avec Jon Skeet sur celui-ci pour la commande oracl mais vous voudrez peut-être essayer de créer une requête SQL normale dans une chaîne, puis d'exécuter la requête.

Vous pouvez utiliser la fonction to_date pour convertir votre date au format correct.

insert into table_name 
(date_field) 
values 
(to_date('2003/05/03 21:02:44', 'yyyy/mm/dd hh24:mi:ss')); 

(Via Standard Date and Time Format Strings)

Ou d'autre part, vous pouvez essayer convertir la date à un format approprié Oracle accepté à l'aide des fonctions C#: Oracle/PLSQL: Insert a date/time value into an Oracle table

Merci

Questions connexes