|
Read the values from the output parameter after you've finished iterating over the reader.
|
|
|
|
|
This stored proc returns 34 values. The first 20 are required, but to maintain the file format that is being created, we are using all 34 fields. When I define the ExecuteReader, and use this form of syntax, sqlRead.GetString(25), the process fails as it is null. I would have to error check every single remaining field for nulls.
if(!sqlRead.IsDBNull(25))
{
}<br />
<br />
Is there another way to do this? Tried looking into a foreach loop, but that would not work.<br />
<br />
Thank you!!!
|
|
|
|
|
Continue to use the ExecuteReader() ...
To get the output values, you need to have first read from the DataReader and then closed it. In the case of the sample, you must have the read after the "using statement" (the using statement will automatically close the data reader), or you must force the DataReader closed before proceeding...
OPTION 1:
using ( SqlDataReader dr = cmd.executeReader() ) {
while ( dr.Read() ) {
}
}
int ouputValue = (int) outParam.Value;
OPTION 2:
SqlDataReader dr = cmd.ExecuteReader();
while ( dr.Read() ) {
}
dr.Close();
int ouputValue = (int) outParam.Value;
Does that help?
|
|
|
|
|
Thank you!! Thank you!!
Closing the reader did the trick!!!!
|
|
|
|
|
Suppose that I have a solution with many console projects, let's say P1, P2, P3. You can run each of them individually. Moreover I have a project named MENU (StartUp project), running it I'm able to call each projects of my solution (so P1, P2,P3). Each project is a console project with many static methods (so for project P1 I have P1M1, P1M2,...). Each project has an entry point Main(). Running each single project (for example P1) individually, I show a menu where I can run separately each methods of the project class (for example P1M1, P1M2,..).
The user can use the solution in two ways:
1)
Select a single project (set as StartUp), run it, for example P1. The Main() will start a menu where the user can chose a method( P1M1,P1M2,..)
2)
Run the MENU project, which call a project, then select a method.
How can I call a method P1M1 of project P1 from project MENU:
I used in the MENU project:
ProcessStartInfo start = new ProcessStartInfo();
start.FileName("P1.exe")
Process p = new Process();
p.StartInfo = start;
p.Start();
P.WaitForExit();
But in this way it call the Main(), but I want to call the method P1M1 in the P1 class.
A working solution is to make the Main of P1 with args (Main(string[] args)) and using a switch inside calling each method, but I wonder if is there a smarter solution?
|
|
|
|
|
Yes, you could allow each app to take an optional parameter to execute a particular method then exit -- and that may be a good idea. Using a switch is OK, but may be more maintenance than you want.
Additionally, you could have the MENU app have references to the other apps and call their methods directly rather than using a Process. You could even use the other apps as plug-ins if you want.
Granted, this kind of thinking leads to a fairly complex framework with its own maintenance issues, so you need to use your own judgement about how you predict the system will grow in the future.
|
|
|
|
|
I would just recommend MEF for the plug-in architecture, but I know how you like to re-invent everything .
|
|
|
|
|
|
I can solve using reflection:
I instantiate an Assembly aP1 the assembly P1, then I can easily call methods...
It is a good idea?
|
|
|
|
|
|
|
No, it's hacked up work around for a bad design.
What you should have done is put all the functionality you wanted to call into a class library. Then you can call that functionality from either the console applications OR from your menu driven application. The menu app would use the class library directly and not bother with teh console apps at all.
|
|
|
|
|
Oky, but in this way each project can not also used as stand alone Console Project (a functionality that I need)
|
|
|
|
|
There isn't a webservice connected in this chain somewhere is there?
|
|
|
|
|
Willing to bet your life on that??
YES, you can still use the Console apps seperately from the menu driven version. You would just need to ship the library .DLL with the console .EXE's.
|
|
|
|
|
There are many paths to a solution and you should not consider using Process or Reflection if you are writing all the code.
Another thought to go with Dave's is to split the library into sections and have the smaller apps only include the parts they need.
Definitely give it more thought before writing anything.
|
|
|
|
|
If you want P1 and the like to be plugins, i.e. you can add or remove them at runtime and have the application work out which ones are present, then you need to do something like this, though there are frameworks that could possibly help you with it.
If you are just trying to create a multi-part application, you should statically link the assemblies together at compile time, by setting P1, P2 etc as references in your top level application (either in your IDE or by using /r:P1.dll etc on the command line to csc). Think about whether they even need to be separate projects/assemblies; unless you're planning to reuse some of the components in another application, there's not really any need for them to be.
|
|
|
|
|
I have added a excel spreadsheet with 2 columns. Could anyone be kind enough to point me in the direct of how to loop through each of the cells in the first column, or even provide the code to do it.
Thanks in advance.
|
|
|
|
|
|
I want to point the best alternative in my experience is to use NPOI library you dont need excel installed.
There are several examples in the codeplex site.
AUS Enrique Ferreyra
(Pachu)
|
|
|
|
|
You should have sent this reply to the original questioner, rather than to me.
One of these days I'm going to think of a really clever signature.
|
|
|
|
|
Thanks for that. Do you have any links relating to the syntax for referencing the resource file itself?
|
|
|
|
|
What do you mean by "resource file"? Your question asked about accessing Excel columns.
One of these days I'm going to think of a really clever signature.
|
|
|
|
|
|
Sorry, I don't know how you would access the content from there, you would probably need to write it to disk first. However, since resources are constant data I see no benefit in putting an Excel formatted file into your resources, it would be much easier to convert it to XML or similar.
One of these days I'm going to think of a really clever signature.
|
|
|
|