Thanks to everyone who replied, and to Cerebrus in particular for the very kind offer of help. I will probably take you up on that, but I think I do want to read a book first --- I feel that in the long run, I learn faster and better when I have a good conceptual framework for storing new information. I also appreciate the tip about using "C#" rather than "VC#" in my searches; the improvement in results was dramatic.
Thanks again for the tips. On Jun 15, 2:20 am, Cerebrus <[email protected]> wrote: > Firstly, I'd like to compliment you on a very well articulated > question. > > There are a couple of points that I'd like to make regarding your > scenario. > > 1. You managed to get me googling for and subsequently reading up on > Cathy. The application I use personally as my disk indexer is IFNS > (http://www.sowsoft.com/file-name-search.htm). IFNS also provides > instant searchability across all drives as well as the ability to > create multiple databases. It uses an MS Access DB to maintain the > index. I myself have often given thought to building a Quick-searcher > application that would quickly search my disks for the file I want. > The biggest problem with file indexers is that they quickly grow out > of date, which is why I want to build an app that searches the disk > (not a semi-obsolete catalog) but does it in the fastest way possible. > Windows file indexers circumvent this problem by constantly running > the indexing as a background service. > > 2. The application you build using C# will certainly not be as fast or > compact as the C/C++ application. The .NET Framework exposes classes > such as the FileInfo, DirectoryInfo and FileSystemInfo (abstract base > class of the previous two) in the System.IO namespace which internally > call into the Win32 API to do the work. Of course, it would be quite > easy to handle Unicode, flexible search options and Regex based > searches in C#. So, you need to decide if high performance is your > foremost priority. > > 3. The usual way to dynamically create a SQL Server database from code > is to create an SqlConnection to the "Master" database and execute a > "CREATE DATABASE..." query. A very simplistic example is presented > here: > > http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q307283 > > As a matter of principle, I do not like to build ad-hoc SQL strings > like this. Even if it were for my own use, I would simply create an > Stored Procedure in the Master database and invoke that. > > LINQ also provides dynamic database creation via the > DataContext.CreateDatabase() method. But you would require either > declarative or external file mapping to create the database schema. > > So, the first thing you should do is decide upon the database you want > to use. When I build apps for my own use, MS Access seems a very > attractive option. > > 4. There appears to be ample information on the web regarding dynamic > DB creation. It appears that you might not be searching with the right > keywords. Please note that searching with the keyword "create database > VC#" will bring your far less relevant results than simply with > "create database C#" because the majority of the industry refers to > the language simply as "C#". As a side point, when I need language > independent results, I usually use an OR operator in my googling > ("create database C# OR VB.NET"). > > 5. I'm not very clear about just how comfortable you are working with > the .NET framework. I don't think you need a book to build this kind > of application. You could read a book on ADO.NET and one on Windows > forms apps to build your concepts, but I would not recommend it unless > you intend to move into the .NET domain professionally. A couple of > online tutorials should get you going as far as I can tell. > > I'd be glad to provide any guidance I can, so don't hesitate to let me > know if you need more information. > > On Jun 14, 5:44 pm, tonysin <[email protected]> wrote: > > > I need someone to point me in the right direction. i'll give a few > > paragraphs of background, but if you just want the question, skip down > > to "HERE IS THE QUESTION:" > > > I was a C programmer in scientific apps before I retired. I'm now > > puttering around with Visual C#. So I know how to program, but I'm a > > little shaky with OOP, and I'm clueless with databases. > > > There is a freeware disk cataloger called Cathy that I have used for > > many years. It's small and fast. You give it a starting point, e.g. > > folder, drive, CD, etc., and it very quickly builds a database of the > > files from there down, recursing through all the subdirectories. You > > do that with as many drives or CDs as you want, and you end up with a > > bunch of little databases, one for each drive (or CD or any > > combination). Then when you want to know where a particular jpg file > > is, you just type in part of the name, and Cathy almost instantly > > finds every file on every drive that matches the string. I have > > dozens of drives with several terabytes of data in millions of files, > > and a search only takes a second. Rebuilding the catalog of a system > > partition can take a minute, though. > > > So, I love Cathy, but it's a bit dated, and its limits are beginning > > to be a problem. The big problem is it's not unicode, and I have a > > lot of files and folders with Asian characters that it can't handle > > correctly. I'd also like more flexibility in the search, e.g.ranges > > on the date and size, and regex in the search string. So I want to > > write a windows forms app that does all that, just for my use (unless > > Bill G calls and offers me a million bucks). > > > HERE IS THE QUESTION: What is the best way to create and access > > databases in a VC# program? By best, I mean reasonably fast, > > reasonably easy to program, and it's all done within my VC# forms app, > > i.e. I don't build the DB in SQLServer or something and then use VC# > > to query, I do EVERYTHING in VC#. > > > I have been googling around, and there are all kinds of sites that > > talk about database programming with C#, but they all seem to have > > different approaches. There is ADO, LINQ, SQL Server, etc. I looked > > at some books in the bookstore, but I couldn't find one that showed > > how to create databases programmatically within VC#. Half of them had > > you type the data in yourself, and the other half had you use > > SQLServer or something to create the DB, and then use VC# to query it. > > > I don't want to do either of those. I want to programatically recurse > > through my folders and enter every file I find into a DB, from within > > the VC# app. Then I want to be able to enter a search string and some > > date and size ranges, and see all the files that match. > > > If someone could tell me generally how to do that, I can probably find > > a book to get the details. If someone could point me to a website > > that talks about it, even better. > > > Thanks for any help.
