ci-dessous est ma capture d'écran de table:
Données après l'insertion
p>
code en C # p> Code pour créer la procédure dans SQL Server 2008 P> ALTER procedure [dbo].[finalinsert] @fid int,@fcid int,@ftid int,@frdn date,@ford date,@uid int,
@paid int,@source varchar,@destination varchar,@fc varchar,@fty varchar,@fcl varchar,@ft time(7) ,@fn varchar
AS
INSERT INTO [shangrila].[dbo].[flight_reg_table]
([flight_id]
,[flight_cost_id]
,[flight_time_id]
,[flight_reg_date_now]
,[flight_on_reg_date]
,[user_id]
,[paid]
,[source]
,[destination]
,[flight_name]
,[flight_cost]
,[flight_type]
,[flight_class]
,[flight_time])
VALUES
(@fid,
@fcid,
@ftid,
@frdn,
@ford,
@uid,
@paid,
@source,
@destination,
@fn,
@fc,
@fty,
@fcl,
@ft)
4 Réponses :
Dans votre SPROC, votre Varchar doit avoir une longueur associée à celle-ci, telle que varchar (50) code>. La longueur par défaut est 1. SO SQL n'envoie qu'un seul caractère à votre SPROC.
ALTER procedure [dbo].[finalinsert]
@fid int
,@fcid int
,@ftid int
,@frdn date
,@ford date
,@uid int
,@paid int
,@source varchar(50)
,@destination varchar(50)
,@fc varchar(50)
,@fty varchar(50)
,@fcl varchar(50)
,@ft time(7)
,@fn varchar(50)
AS
-Merci beaucoup :) Je pense que le problème sera résolu, mais une fois la modification de la nouvelle erreur, on ne peut pas convertir la chaîne en format DateTime :(
Vous pouvez probablement simplement utiliser datetime.now code> au lieu de la transformer en une chaîne. Mais c'est ma supposition depuis que je ne sais pas quelle datetétime causent un problème.
Quoi qu'il en soit, votre code C # sera plutôt meilleur si on ressemblera à ceci: p> using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlCommand cmd = connection.CreateCommand())
{
cmd.CommandText = commandName;
cmd.CommandType = CommandType.StoredProcedure;
...
cmd.Parameters.Add("@source", SqlDbType.VarChar, 50).Value = flightsession.Sscource;
cmd.Parameters.Add("@destination", SqlDbType.VarChar, 50).Value = flightsession.Sdestination;
cmd.Parameters.Add("@fn", SqlDbType.VarChar, 40).Value = flightsession.Sflightname;
cmd.Parameters.Add("@fc", SqlDbType.VarChar, 50).Value = flightsession.Total;
cmd.Parameters.Add("@fty", SqlDbType.VarChar, 50).Value = flightsession.Stype;
cmd.Parameters.Add("@fcl", SqlDbType.VarChar, 50).Value = flightsession.Sflightclass;
connection.Open(); // open just now!
cmd.ExecuteNonQuery();
} // using block call Dispose() for each object locker to guarantee close of the connection
@ABATISHCHEV: -NEW Erreurs Il ne peut désormais pas convertir la chaîne à la date. Le format de ma base de données de temps (7) est de 09h00: 00.0000000 et ma chaîne est 09:00:00
@Pixelerator: Dans quelle colonne?
@ABATISHCHEV: -Je figuré le convertit d'abord en datetime à l'aide de DateTime.Parse Méthode DateTime DT = DateTime.Parse (Volsession.sfrimer); et puis encore le convertir en string dt.tostring ("HH: mm: ss"); et merci de suggérer l'utilisation et disposer de la méthode :)
@Pixelerator: avez-vous essayé sqldbtype.dateTime code> sans
Tostring () code>?
@Abatishchev: - Je n'ai pas essayé, je vais essayer :)
Votre procédure stockée Varcharne doit changer pour montrer la longueur du champ. Ie @fn varchar (50). P>
ainsi que le type de données des variables, vous devez mentionner la taille de l'élément de données. Ex: varchar (50) p>