Bonjour à tous,
Un petite question j'ai un problème sur une requête SQL Oracle, je veux récupérer 3 champs de ma BDD la requete marche parfaite dans Toad ou autre et me renvoie bien les valeurs des 3 champs du select.
Lorsque j'utilise la requete dans le code c# je récupère l'erreur suivante car la variable du dr.GetString(2) est = null alors qu'il y a bien une data dans la BDD sur ce champ ...
voici le détail de l'erreur.
L'exception System.InvalidCastException n'a pas été gérée
HResult=-2147467262
Message=Le cast spécifié n'est pas valide.
Source=Oracle.DataAccess
StackTrace:
à Oracle.DataAccess.Client.OracleDataReader.GetString(Int32 i)
à TherAcc.Form1.getInfoPat() dans c:\Users\j.mondout\Documents\Visual Studio 2013\Projects\TherAcc\TherAcc\Form1.cs:ligne 109
à TherAcc.Form1.button1_Click(Object sender, EventArgs e) dans c:\Users\j.mondout\Documents\Visual Studio 2013\Projects\TherAcc\TherAcc\Form1.cs:ligne 44
à System.Windows.Forms.Control.OnClick(EventArgs e)
à System.Windows.Forms.Button.OnClick(EventArgs e)
à System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
à System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
à System.Windows.Forms.Control.WndProc(Message& m)
à System.Windows.Forms.ButtonBase.WndProc(Message& m)
à System.Windows.Forms.Button.WndProc(Message& m)
à System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
à System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
à System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
à System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
à System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
à System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
à System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
à System.Windows.Forms.Application.Run(Form mainForm)
à TherAcc.Program.Main() dans c:\Users\j.mondout\Documents\Visual Studio 2013\Projects\TherAcc\TherAcc\Program.cs:ligne 19
à System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
à System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
à Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
à System.Threading.ThreadHelper.ThreadStart_Context(Object state)
à System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
à System.Threading.ThreadHelper.ThreadStart()
InnerException:
j'ai fait le test en récupérant les data dans un datagrid pas de problème j'ai la data....
je suis un peu perdu si quelqu'un à une idée.
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 OracleConnection OCon = new OracleConnection(oradb); OCon.Open(); OracleCommand cmd = new OracleCommand(); cmd.Connection = OCon; cmd.CommandText = "select NOMPAT,PNOPAT,DATNAI from patien where NUMDOS = '" + numdos + "' "; // cmd.CommandType = CommandType.Text; OracleDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { Console.Write(dr.GetString(0)); Console.Write(dr.GetString(1)); //Console.Write(dr.GetString(2)); string nomPat = dr.GetString(0); string pNomPAt = dr.GetString(1); //string dateNaissPat = dr.GetString(2); lbl_nomPat.Text = dr.GetString(0); lbl_pNomPat.Text = dr.GetString(1); lbl_dateNaiss.Text = dr.GetString(2); } OCon.Close(); }
Partager