|
I won't. If you post a programming question in the Lounge, that's when you'll get flamed big time.
"Blessed are the peacemakers, for they shall be called sons of God." - Jesus
"You must be the change you wish to see in the world." - Mahatma Gandhi
|
|
|
|
|
Profox Jase wrote:
Heh, just realised I should have posted this on the .NET discussion page.
Please don't flame me, please don't flame me!
I wouldn't worry about it, perhaps if I were more diligent in the early days of this forum your post would be off-topic. Alas, I answered any .NET question here so it got used more than the .NET forum
James
"I despise the city and much prefer being where a traffic jam means a line-up at McDonald's"
Me when telling a friend why I wouldn't want to live with him
|
|
|
|
|
Thanks boys an girls, for not hammering me. If any of you have any spare time, please do have a look at the question - I guess its one of those things that you either know, or you don't care, or you want a challenge.
Well, I guess I am trying to manipulate you into solving my problem for me. There is just one piece of logic I can't figure out - Ben Peterson's Asmex code is a winner, just I am too dumb to figure out one last crucial element.
Jason King
jason.king@profox.co.uk
Feel the love at www.profox.co.uk
|
|
|
|
|
|
|
I am creating a windows application using c# and have the need for a robust data store. My application is similar to that of Outlook (different data, similar size + display) where the listbox that contains your mail items can have upwards of 10k entries and 100mb+ of data. I am researching different methods of storing this data so that the application can have easy access to it (not only for displaying but also random access and searching). Storing the data in an external database is not an option. The data store must be internal to the application (atleast from the user's point of view).
I remember something about Outlook using a striped down version of sql server on the inside... I have looked a little into using embeded mysql server and I have seen a few people talking about doing the same. Can anyone provide feedback weather or not this is a good idea? Are there better alternatives for a data store that can handle this quantity of data effeciently?
Thanks.
|
|
|
|
|
Have you considered using MS Access.
You dont have to install anything spl(drivers et al) for accessing them also you can password protect the db, I know CityDesk[^](a content mgmt. system) uses them extensively.
Regards,
Kannan
|
|
|
|
|
I have considered using an external database but realized it just isnt an option. I dont want the user to be required to run an external service just to use my application. They should be able to run it, and it alone, and have it display their data. Think Outlook Express and large quantities of email.
Thanks.
|
|
|
|
|
You can use classes from System.Data namespace and build the database only on the client. You would have DataSet, DataTable, DataView, constraints etc. Moreover you could serialize the data and read them when App start. Advantage: you work with database without any DB engine .
Tomas Rampas
------------------------------
gedas CR s.r.o.
System analyst, MCP
TGM 840,
293 01 Mlada Boleslav,
Czech Republic
Telefon/phone +420(326)711411
Telefax/fax +420(326)711420
rampas@gedas.cz
http://www.gedas.com/
------------------------------
To be or not to be is true...
George Bool
|
|
|
|
|
Why not use MSDE? I'm not sure if this qualifies as an "external database". If you're looking at using mysql you're using an external database anyway.
I really wouldn't go and reinvent the wheel though.
|
|
|
|
|
Sorry I didnt make this clearer in my original post. The particular flavor of mysql I was looking at is an embeded version that runs inside your application. You use their dll to interact with the database files. There is no 'external process'.
What I am looking for is a solution that the user wont have to muck with. I want them to run my application, and that is it. I dont want them to have to start a database server first. Think Outlook Express.
Thanks for the feedback, I will look into MSDE (not all that familiar with MS technologies).
|
|
|
|
|
Internally, I'd work with DataSets and DataTables, no question. Because both MSDE and Access databases have quite expensive disk costs, I'd use the XML serialization features in conjunction with compression (SharpZipLib perhaps?) to persist these structures to disk.
Here comes the clue: You can use the DPAPI (Data Protection API; look for CryptProtectData in MSDN) to encrypt them without worrying about key/password management.
|
|
|
|
|
For compression you could also check out the J# libraries. They have built in Zip compression.
-Nathan
---------------------------
Hmmm... what's a signature?
|
|
|
|
|
But do you need to ship a separate j# redistributable
Kannan
|
|
|
|
|
yeah, that is a down side...
But with the app I am working on, it is a small thing compared to the rest (DirectX 9, MSDE, Framework 1.1)... so hell why not
---------------------------
Hmmm... what's a signature?
|
|
|
|
|
Forgive me if I am saying something that doesn't make sensen as I am not familiar with DataSets and tables... The amount of data I will be working with will typically be around 100mb (maybe 10k rows). If DataSets and DataTables keep everything in memory without using disk this would give my application took big of a memory footprint (although the access speed would be nice =) ). Also, I would be concerned with the amount of time it would take to serialize and compress the XML, then on load bring it all back in.
A similar application to what I would like is Outlook Express. Potentially the user could have 3 years of email in several folders. In order to access their data all they do is run Outlook, they dont need to start an external database server of any kind... and the memory footprint is reasonable even if you have 10k email messages.
Thanks for the incite, I will definitly look into DataSets and tables more to see what they are all about. It should definitly come in handy some day.
|
|
|
|
|
Customer singleCustomer = new Customer();
PropertyManager pm = this.BindingContext[singleCustomer] as PropertyManager;
What does the as keyword do here is it the same as type casting with the parentheses?
nick
I'm not an expert yet, but I play one at work. Yeah and here too.
|
|
|
|
|
Ista wrote:
What does the as keyword do here is it the same as type casting with the parentheses?
The basic idea is the "as" keyword does the same thing as casting except if the object can't be cast it won't throw an error, it will return null so you might want to do something like:
Customer singleCustomer = new Customer();
PropertyManager pm = this.BindingContext[singleCustomer] as PropertyManager;
if(pm != null)
-Nick Parker
|
|
|
|
|
So is that bad programming practice and should only be used in strictly sure cases or it doesnt really matter?
I'm not an expert yet, but I play one at work. Yeah and here too.
|
|
|
|
|
Ista wrote:
So is that bad programming practice and should only be used in strictly sure cases or it doesnt really matter?
There isn't a problem with it as long as you are confirming the cast was performed without returning a null value. If you don't check for a null value and the cast returns a null, accessing your object will then throw a NullReferenceException .
-Nick Parker
|
|
|
|
|
There are somethings we are bound to miss, but I have a hard time beleiving, I missed this one. Did not pay attention to the usefulness of "AS"...
Tanx!
Rocky Moore <><
|
|
|
|
|
-Nick Parker
|
|
|
|
|
Well, if your research patterns are anything like mine, you mainly concentrated on the things things that you needed to get the job done, and therefore skipped some of the extras, like this one.
"Blessed are the peacemakers, for they shall be called sons of God." - Jesus
"You must be the change you wish to see in the world." - Mahatma Gandhi
|
|
|
|
|
jdunlap wrote:
Well, if your research patterns are anything like mine, you mainly concentrated on the things things that you needed to get the job done, and therefore skipped some of the extras, like this one.
Just remember, it all maybe useful sometime down the road, mental bookmarks do it for me.
-Nick Parker
|
|
|
|
|
Yes.
Speaking of research patterns:
What I find best is to investigate the technologies you come across just enough to get a feel for what they do and what they would be good for. Then learn in detail the technologies relative to the projects you work on. If you happen to need a certain functionality, your "shallow research" will have given you the knowledge you need to narrow down your search to the technologies that will fit the new need.
"Blessed are the peacemakers, for they shall be called sons of God." - Jesus
"You must be the change you wish to see in the world." - Mahatma Gandhi
|
|
|
|