|
Simon's suggestion is a good one. The DataAdapter actually uses DbCommand s and DataReader s (where applicable) internally. Everything you can do with the DataAdapter can be done with the other two classes I mentioned. Just make a DbCommand for the SELECT (use a DataReader here), INSERT (with option SELECT afterward), UPDATE, and DELETE commands and execute them accordingly, i.e. enumerate the rows, check the DataRow.RowState property, and execute the appropriate DbCommand .
You should get a good decompiler like .NET Reflector[^] and see how the DataAdapter (specifically, a derivitive class like SqlDataAdapter ) works internally.
-----BEGIN GEEK CODE BLOCK-----
Version: 3.21
GCS/G/MU d- s: a- C++++ UL@ P++(+++) L+(--) E--- W+++ N++ o+ K? w++++ O- M(+) V? PS-- PE Y++ PGP++ t++@ 5 X+++ R+@ tv+ b(-)>b++ DI++++ D+ G e++>+++ h---* r+++ y+++
-----END GEEK CODE BLOCK-----
|
|
|
|
|
|
Marc Clifton wrote:
Is there some benefit to that?
Hmm, not sure about this one, however in all actuality it is best to do the following:
string s = "Nick";
if(s.Length != 0)
MessageBox.Show(s.ToString());
Because the compiler will emit less MSIL in relation to string.Equal(...); . Check this out on the FxCop Rule Topic[^] for System.String.Length .
- Nick Parker My Blog
Last time I checked, all programmers have selective ignorance. I know nothing about 3D graphics. I know a lot about COM. VB gets under people's skin because one can be ignorant of computer architecture and ASM and still get a lot done. - Don Box
|
|
|
|
|
But...
Be careful with .Length because if the string reference is null, you will get an exception.
string s = "Nick";<br />
<br />
if(s != null && s.Length != 0)<br />
MessageBox.Show(s.ToString());
|
|
|
|
|
Correct, specifically a NullReferenceException which is documented in the link I included with my post to Marc.
- Nick Parker My Blog
Last time I checked, all programmers have selective ignorance. I know nothing about 3D graphics. I know a lot about COM. VB gets under people's skin because one can be ignorant of computer architecture and ASM and still get a lot done. - Don Box
|
|
|
|
|
I don't think so. Just checked the IL and apparently
string a = string.Empty;
creates 1 more IL code than
string a = "";
As for any benefits, well, not to my knowledge. Maybe String.Empty is more readable than "" ?
"if you vote me down, I shall become more powerful than you can possibly imagine" - Michael P. Butler.
Support Bone
It's a weird Life
|
|
|
|
|
Brad Abrams said
"" Actually creates an object.
String.Empty does not.
Thank You
Bo Hunter
|
|
|
|
|
so this means that String.Empty is actually more beneficial?
|
|
|
|
|
Marc Clifton wrote:
Is there some benefit to that?
Marc, FYI, here is the IL between the two (not a whole heck of a lot of difference, huh):
string s = "";
.method public hidebysig specialname rtspecialname
instance void .ctor() cil managed
{
.maxstack 1
.locals init (string V_0)
IL_0000: ldarg.0
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: ldstr ""
IL_000b: stloc.0
IL_000c: ret
}
string s = string.Empty;
.method public hidebysig specialname rtspecialname
instance void .ctor() cil managed
{
.maxstack 1
.locals init (string V_0)
IL_0000: ldarg.0
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: ldsfld string [mscorlib]System.String::Empty
IL_000b: stloc.0
IL_000c: ret
}
- Nick Parker My Blog
Last time I checked, all programmers have selective ignorance. I know nothing about 3D graphics. I know a lot about COM. VB gets under people's skin because one can be ignorant of computer architecture and ASM and still get a lot done. - Don Box
|
|
|
|
|
I agree with Bo.
Using String.Empty returns a "const" string object, so you will be refereing to the same object instead of creating another. Performance wise I wouldn't lose sleep over something like this.
leppie::AllocCPArticle("Zee blog"); Seen on my Campus BBS: Linux is free...coz no-one wants to pay for it.
|
|
|
|
|
Marc Clifton wrote:
Is there some benefit to that?
Last tid bit Marc, I was just watching MSDN TV where they talk to the CLR team that created FXCop and they discuss the reason for not using "". You can view this here: Code Correctness with FxCop[^].
- Nick Parker My Blog
|
|
|
|
|
|
Does any one know how to set the color of a scroll bar in XP and make it independent of the XP theme settings?
Lloyd Kreuzer
|
|
|
|
|
Hi,
How do I call WMI to access a remote system's information, such as disk storage and registry keys?
Any pointers will be greatly appreciated.
Thanks.
Sue
|
|
|
|
|
um... "Add Refrence" to the System.Managment dll, then conduct a search of these message boards for an array of various answers. That is as much as I feel safe to answer at this time.
have a nice day.
/\ |_ E X E GG
|
|
|
|
|
I'm such a smart ass. I'm probably wrong though. Actually, I bet I am...
Why do I even post this stuff....
sorry for wasting your time. I bet you got all excited, "YEAH!, somebody knows the answer to the problem I'm been trying to fix for DAYS..."
but no. it's just my incoherent ramblings and missspelled words.
/\ |_ E X E GG
|
|
|
|
|
Sue,
Please check out Windows Management Instrumentation (WMI) Implementation[^]; it should answer your questions.
- Nick Parker My Blog
Last time I checked, all programmers have selective ignorance. I know nothing about 3D graphics. I know a lot about COM. VB gets under people's skin because one can be ignorant of computer architecture and ASM and still get a lot done. - Don Box
|
|
|
|
|
Thanks Nick and Eggie 5 for the info.
Yes, I did find it from using WMI for accessing remote disk information, and I was able to use RegistryKey.OpenRemoteBaseKey() to get the remote system's registry key info.
Sue
|
|
|
|
|
how do the "spyware" programs work that record user behavior outside of their own application? are there standard c# or windows ways to track the mouse, record keystrokes, record which applications are run, or do these programs need to hook low level drivers and such?
anybody know?
Thanks in advance!
|
|
|
|
|
Looking for some help on writing some spyware, huh? I hope to the heavens no one is dumb enough to answer this one!
You might as well ask us to do your homework, too. That goes over real well here, too!
-----BEGIN GEEK CODE BLOCK-----
Version: 3.21
GCS/G/MU d- s: a- C++++ UL@ P++(+++) L+(--) E--- W+++ N++ o+ K? w++++ O- M(+) V? PS-- PE Y++ PGP++ t++@ 5 X+++ R+@ tv+ b(-)>b++ DI++++ D+ G e++>+++ h---* r+++ y+++
-----END GEEK CODE BLOCK-----
|
|
|
|
|
newbie1 wrote:
anybody know?
Yes, but to be honest it is best to start with something much simpler than this if you are a newbie. I highly doubt you will get anyone here to post anything explaining how to implement spyware. There are many great articles here on CodeProject that can get you started in C#. Why not register for an account and start reading them, then you can also download the source code too.
- Nick Parker My Blog
Last time I checked, all programmers have selective ignorance. I know nothing about 3D graphics. I know a lot about COM. VB gets under people's skin because one can be ignorant of computer architecture and ASM and still get a lot done. - Don Box
|
|
|
|
|
Nick, thank you. i have in fact looked at some of the great many articles and i agree CodeProject is a wonderful place, i've also purchased from people that advertise on CodeProject.
As for how spyware is implemented, I think the question of how things like this are implemented is a perfectly reasonable question, and of general interest to the community. if the answer is that it can't be done by documented api's or in a "legitimate" way, that would be an interesting discussion.
apparently i asked a taboo question, but why? if you don't agree that it's a question of general interest to this forum, please say so, but please! if you think you're keeping the world safe from spyware by not discussing it on CodeProject-- number one i am NOT implementing spyware, number two the people who are implementing it certainly seem to be doing it just fine without help from this forum.
my $.02. and no offense to you or to Heath-- i know you guys take a lot of time and put a lot of thought into these posts, and you are certainly well respected and appreciated (*even if* in this particular instance i think you're off the mark).
Thanks!
|
|
|
|
|
newbie1 wrote:
As for how spyware is implemented, I think the question of how things like this are implemented is a perfectly reasonable question, and of general interest to the community.
I would agree to some level. Here is my take on it. In order for you to fully understand how to implement "spyware" you will need to learn many of the basics to the C# language and how it operates with the Windows environment. This is simply a must. There are even articles here on CP that discuss how some of these "spyware" concepts work, however without an understanding of the basic components of the language you will constantly find yourself trying to figure out how it all fits together. You won't find anyone on here that will directly tell you how to implement it, however, by reading some of the articles you will be in a better position. These comments were only meant to be constructive, not to push you away.
This simply reminds me of the saying: "Give a man a fish, feed him for a day. Teach a man to fish, feed him his entire life". I hope you don't walk away from this negatively.
- Nick Parker My Blog
Last time I checked, all programmers have selective ignorance. I know nothing about 3D graphics. I know a lot about COM. VB gets under people's skin because one can be ignorant of computer architecture and ASM and still get a lot done. - Don Box
|
|
|
|
|
newbie1 wrote:
but why? if you don't agree that it's a question of general interest to this forum
I don't think that many people using CodeProject are writing SpyWare. According to a recent survey only 7.23% (survey is still open so that may change) of people on CodeProject answered Not Applicable to the question "What is your job role (or roles)?" indicating that 92.77% have an IT related job. 78.77% answered Developer to the same question. I doubt many (if any) will be writing spyware applications. So, I'd say the demographics for spyware discussions is wrong. However the demographics for professional peer-to-peer discussions is right.
Most people here are probably aware of the fundamentals of a spyware application but that's as far as they want to take it. They may also know a number of techniques for finding information about other applications or system configuration in the course of their normal job.
From a personal point of view. The questions I ask in the programming forums on Code Project are all things that I am working on. Things that I have become a bit stuck on during the course of my every-day work. I don't tend to ask questions on things that I won't be working on. I take the view, rightly or wrongly, that the majority of other people on Code Project do the same. So when I see a question that is obviously spyware or where I don't see a legitimate reason for asking the question I'll ignore it.
--Colin Mackay--
"In the confrontation between the stream and the rock, the stream always wins - not through strength but perseverance." (H. Jackson Brown)
Enumerators in .NET: See how to customise foreach loops with C#
|
|
|
|
|
Nick, Heath, Colin, thanks.
Ok, let me try this one more time.
Nick, I'm not sure how it was i induced you to believe that i know absolutely nothing about c# programming, as far as i know i simply admitted ignorance in the area of how to capture keystrokes when my application doesnt have focus, and what is required to get notifications that another app gets focus, etc. Don Box might say that being ignorant of this particular aspect of programming does not necessarily confer ignorance of the basics of c#!!
Colin, i certainly agree that the vast majority of CodeProject readers are not engaged in fulltime spyware development (and contrary to Heath's suggestion, it's not my goal either). on the other hand, billions of people around the world think they should have some clue what george bush says and does, even though they don't work for him. am i the only developer in this forum who has thought it might be interesting to capture information outside their app? does no one else wonder how spyware might do it? yes, perhaps it isn't exactly what one is planning on working on, but i think people do try to have at least some general sense of what is possible and how things are done, that's how people get insights and view problems in new ways.
ok, enough with the philosophy. although i chose the example of spyware because i thought would be a good metaphor, i'm actually interested in the understanding how independently written applications can interact. here are 3 examples that i think are interesting:
-- keystroke macros. i've always assumed you need to be a keyboard driver to implement global macros, is there any other way?
-- gestures. my glidepad hardware came with a nice little gesture recognizer, can the same thing be done hardware independent, say by globally capturing the mouse and pushing manufactured events into the app's event queue?
-- office assistant. do you need to be microsoft to write "mr paperclip", or can a third party without access to the office source code still build an app that watches what a user is doing and makes suggestions.
Thanks in advance for any insights!
|
|
|
|