As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
I am new to programming (1 year of C#-winforms) and am from a non CS background. I have not worked with databases yet. As an application programmer, how much should I know? and where should I start from?
EDIT:
Specific topics, books, tutorials, blogs would be appreciated.
Introduction to Databases course: http://infolab.stanford.edu/~widom/cs145/
and this textbook: Introduction to Database Systems, An (8th Edition)
If you just want to get some experience with databases you may want to download and install postgres, and try designing a simple database to use that.
If you don't want to learn SQL then you could get a good book on LINQ, or some tutorials, on DLINQ, aka LINQ to SQL and just start to work with your database that way.
Basically, just install a database, come up with a simple project and start working with it. There are several frameworks you can use, but LINQ may be the easiest to start with.
At the very least, familiarize yourself with relational databases and SQL syntax. Later, learn about stored procedures and advance data manipulation techniques. The internet is full of tutorials and sample code. install (the free) Sql Server 2008 Express for best .Net integration, or MySql if you're Linux-inclined, and start playing. Good luck!
Best place you can start is here:
http://www.w3schools.com/sql/default.asp
Since you're new to C#, it probably means you'll be doing a lot of work in the future using .NET and SQL Server, so you'll want to download SQL Server Express:
http://www.microsoft.com/express/sql/default.aspx
And finally, you should start a pet project to develop your skills. I recommend writing a blog, message board, or version control system from scratch. The idea here is not to produce a commercial product, but to learn the ins and outs of SQL Server, database normalization, and common data modeling problems you'll encounter in the real world.
Good luck!
Start by understanding how databases are structured! Skip SQL for now, just work with the designer of your DB of choice.
One-to-many relationships
Many-to-many relationships
Keys (primary, surrogate, candidate, compound)
Afterwards you can move onto the bible of good database design: Normalization. Learn 1-3rd normalization-form.
Now, you can design a db (yay), and throughout those learning hours I'm sure you've seen some SQL syntax. If you want you can learn SQL here, or you can just sit back and have an ORM do your dirty work (personally, I'm not really good at SQL, I got that "I know what this does"-feeling, which is the bare minimum. I'm doing alright using NHibernate though :) )
Start by learning SQL language. Install a database engine and create/query tables. Then, you could learn how to use an ORM, but only once you know how sql language works.
Begginers tutorial
http://www.w3schools.com/SQl/default.asp
Some orms for .net
http://social.msdn.microsoft.com/Forums/en-US/architecturegeneral/thread/84229d82-1065-4c56-bd12-e95f5a545a02
Related
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
We have a large web application that uses multiple databases (all currently MS SQL Server 2008 R2). This application is around 7 years old and was built around the EntitySpaces framework. It's currently using version 2009 of this framework, written using .NET in C# and targetting .NET 3.5
Now that ES is no longer around we have a need to change this to something else and are having problems deciding what to use.
Our database schema is very mature and works perfectly for us. The application is installed in over 80 sites across the UK.
Ideally we'd like a similar ORM tool that we can just point to the existing database schemas and generate our business and data acess layer classes. We don't mind about updating to a higher .NET framework if necessarry.
Our application makes use of both the Entityspaces objects and also call some stored procedures to provide reporting functions. This is something we cannot change so the ability to call parameterised stored procs is essential.
My question is - Has anyone had any experience of doing this and can anyone recommend any tools to use to try out?
Thanks in advance,
Andy
Entity Framework would be the obvious choice as Microsoft's own ORM. It definitely supports mapping to stored procedures, and generating models from databases (aka. "Database First" in EF parlance).
You mentioned that you use multiple databases - this makes things more complicated (in any ORM) - as a word of advice, there is absolutely nothing wrong with creating multiple models in EF, especially if you line these up with your bounded contexts.
Julie Lerman's books are probably the best resource for learning EF: http://www.amazon.co.uk/s/ref=nb_sb_ss_c_0_12?url=search-alias%3Dstripbooks&field-keywords=julie+lerman&sprefix=julie+lerman%2Caps%2C211
There are also lots of courses available at Pluralsight.
I would definitively recommend you to have a look at ServiceStack.OrmLite!
It fits exactly to your needs as it maps a POCO class 1:1 to an RDBMS table.
It allows you to call Stored Procedures, comes with T4 templates to help you out with the code generation part and it’s really simple and pretty fast!
I have use CodeSmith extensively, and can hightly recommend it: http://www.codesmithtools.com
I used Codesmith for a few years, creating my own implementation using the CSLA.NET framwork, these days however I use T4 Templates with the Entity Framework, which works very well.
I would recommend EF and T4 templates if you want to use EF and Codesmith if you want to build your own ORM based on your own architecture or something similar to that of ES.
Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 11 years ago.
Improve this question
I've been lurking around for several weeks and have been totally blown away by the amount of information and how the community quickly responds. I have noticed that questions like this typically receive sarcastic remarks and sometimes get down voted. Please bear with me as I attempt my first post :)
I little background..
I work at a tiny software company as the "QA department". Our application has a MS SQL back to store customer data and short term loan information for financial service companies. I started working here 6 years ago as a gernal technician to provide support for their call center, so I've been overly exposed to SQL and have become fairly familiar with working with it. You probably wouldn't pay me to develop a enterprise level database, but at this point I've become familiar enough to do most things in SQL.
Why I'm asking my question..
I want to develop an application to store and track our software issues and new dev. I've done research on this website along with asking around and I still feel sort of lost as to which direction I should take. I want the core of the application to be pretty basic at first, to provide various screens between my entities/modules and to create reports to show their various relationships. In the future I want it to be more complex, to provide a web portal of some sort and to start getting into various complex QA software concepts. I've read around and it sounds like I might want some variation of C/VB for the windows portion, but all of the topics have sort of overwhelmed me. Do I want to start with a more basic one that was created 20 or 30 years ago? (I think that's C and C++, right?) or a more recent one like C#? Will I be able to develop a web portal with both of these? (by web portal I'm thinking it would provide access to our database of defects and have username/password sign-in). I've seen that the various .NET languages lean more towards web development, should I start with one of these?
I am at the very beginning of this and I fully understand that I'm jumping into some deep waters here. I want to make sure I don't end up spinning my wheels and that I focus my energy on something that won't end up being a bad idea in 1 or 2 years after I start. So far I've found this website very helpful, if I can pick a direction I know I won't have any problems finding what the next step is. It might help to know that I have no formal or informal programming background (if it wasn't obvious). I'm a 27yo techie who is starting his first venture into programming, go easy on me! Thanks for taking the time to read this :)
I won't recommend that you go to C, C++, or VB. C and C++ are used mainly for developement of system software, compilers, etc. VB is deprecated by now; there is a .net version VB.NET, but my preference is C#.
Looks like you are a Microsoft shop. Steer youself towards using C#. Visual Studio provides great support for development of Web Applications with support for holding state in entities backed by MS SQL.
I would start with a simple example as given in MSDN http://msdn.microsoft.com/en-us/library/dd410597.aspx.
This example uses an Model View Controller based framework that is fairly easy to configure and use. They have great examples.
There is a free framework that also supports MS SQL Entity store http://www.coderun.com/ide/
Enjoy
Don't write a line of code. There are literally hundreds of open source and commercial software packages that already do what you want to do. You'd be better of spending time researching them and finding the package that most closely meets your requirements. A good solution will also be extensible enough that you'll be able to modify it to meet all of your requirements.
Since you work for a small company I can guarantee you that using your limited development hours "writing your own" will be counterproductive. You'd be better off adopting something off the shelf and becoming proficient at it. You'll learn more about developing systems like this once you've become intimately familiar with one of them.
Check out JIRA or
http://en.wikipedia.org/wiki/Comparison_of_issue_tracking_systems for some other ideas.
For the benefit of your company I would recommend to use an existing
solution. But if you want to learn and build something of your own, I
would suggest that you check out some popular web application
frameworks, like:
Django
Ruby On Rails
Zend
Good Luck with your project!
Given that your intent is to learn and create something yourself I think you should consider a LAMP stack and PHP with one of the PHP frameworks on top (Cake PHP, code-igniter or the like).
The C++ route is a long hard way (C++ is my language of choice) to learn; as a learning experience I think you will get quicker and more satisfying results with PHP.
I also think that this is a realistic project for someone of your skills over a period of a 6 to 12 months - start with a simple requirement and then build it up to have all the features you need.
If you just want a bug tracking system obviously there are many options that won't demand any development.
How much experience do you have with things like installing Linux, Apache, Mysql, etc? If you are completely new to this, then this will be a much tougher task, because there are many layers you'll have to learn before you can even get to the point of writing an end-to-end application.
I would avoid C/C++/C# because there are a lot of things you would need to learn about basic programming before you even got to the stage where you could make database calls.
On the assumption that you don't have experience with LAMP (Linux/Apache/Mysql/(Perl/Python/PHP)), my suggestion would be to start simply, by using a scripting language like Python or Perl. You can very easily get a database connection, and start writing queries, and extracting data from there. If you are used to Windows, I would install ActivePerl or ActivePython, and start from there. You can start building a command line program that does what you want, and then from there, you can move on to creating a web application that can do something similar.
Building a web application would likely be much easier than writing a Windows application, so after you have gotten comfortable with the scripting language, that's the direction I would go afterwards.
Good luck!
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
Which database would you use for an Open Source Project?
I am looking for something that has little or no setup required by the end-user.
Update: Database size will be relatively small (less than 100,000 records). Application will be written in C#.
If you're looking for embedded database (I guess you do if you ask for something easy for end-user), then SQLite is the most widely deployed SQL database in the world.
Depends on what language you're using, you might need appropriate wrapper for SQLite library.
Update: For .NET, the best wrapper for SQLite is System.Data.SQLite.dll from phxsoftware.
SQLite is nice if you want an SQL-queryable DB:
http://www.sqlite.org/
It doesn't require a server; you just need to include and use the appropriate API libraries in your project. Your database gets stored as a single file on disk.
It depends so very much on how much heavy-lifting that database has to do, but I think it's worth looking into SQLite. It's an amazing little piece of C/C++ code, it's distributed under a public domain license (meaning you can literally do anything you want with it, including resell it).
If you do not need atomic transactions, or very intense type-checking, then there probably isn't a better database. You add the library to your application and it works like a SQL database. Most programming languages have bindings for it. It would be hard for you to describe a case where some other database would be needed.
If it's a web app with PHP then MySQL ... it's installed pretty much everywhere that has PHP installed (which is almost every host).
If it's not... consult the other answers :)
Go with SQLite. It does not need any kind of installation by the end user. It just works.
What about an object database like db4o.net?
Have you looked at SQL Server Express It isn't open source but it is free. I'm a big fan of SQLite but if your in the .net world and want to use a microsoft stack it may be a better choice. It provides some things like T-SQL and a strong type system that SQLite doesn't provide. It does have performance and db size limits not found in the full SQL Server versions but this probably doesn't matter for your application.
I'd second the comments regarding SQLite. It's great for what it is - and for most small, no install DBs, it works very well.
There are a couple of other options, though.
Firebird is one option. It has a pretty impressive feature list, and also includes a .net provider (albeit in beta still).
Another option, though not open source, is VistaDB. It's a 100% managed option, unlike SQLite and Firebird (and most other DBs out there), and has a lot of advantages because of that. It's fairly consistent with MS SQL syntax, supports stored procedures, and many other nice features. They have an "Express Edition" that's free, and can be used in open source projects.
It would depend on what you mean by "end-user"
As others have said SQLite is a great choice if you are looking for something embeddable or for a desktop use.
If you are thinking of some sort of web app, I'd say either MySQL or PostgreSQL as these will provide better performance and be able to handle a large data set more naturally.
If it's windows only Sql Server Compact Edition is a good choice for small apps. It is freely redistributable.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
Which language for quick GUI app + sqlite database CRUD (2-4 tables). Java, Python? (Please no jokes like VBasic), some reference, source code to look on?
added:
First idea:
1 database SQLite (Win) + client GUI app (Win)
clients table + orders table + others
import, export database
add, del, edit, etc. entries
Second idea:
1 hosted database (PostgreSQL ,MySQL) + web app client
clients table + orders table + others
import, export database
add, del, edit, etc. entries
Thinking about Django, RoR or local Java(Netbeans), Python(wxPython+ORM).
???
Try python with wxPython for UI programming. I suggest, that you look for an ORM mapper like SQLachemy.
Somebody suggested dabo which is made especially for your purpose, but I have no experience with it (yet). It works with wxPython and databases like SQLite.
Delphi. It's an ideal fit for this kind of desktop application, and there's a SQLite wrapper available.
Ruby on Rails will do simple CRUD operations very easily - although doing more than that can be a little more complex (would require some reading about RoR's way of doing things). The latest version of Rails automatically uses sqlite databases, and in fact the whole database, and CRUD GUI code can be created with one command (scaffold).
If this is to be deployed then that can be a bit more difficult (although I hear that Capistrano is good) - but for local or intranet use then that's what I'd do.
Whatever you are most familiar with.
Or whatever have better set of ready to go components, so either Java (Netbeans/Matise + wizards) or something else.
Need more info. For in house or will you distribute? Desktop or web-based? If web-based, do you host it or will you have it hosted?
Then there's your personal goals. Really, really do it quick, or let it be an opportunity to learn a language/technology you are curious about, like Ruby on Rails? Linq?
Xojo (formerly called REALbasic), if you want to do a desktop app. The Personal edition comes with SQLite built in and is free on Linux, cheap on other platforms. It's a very clean OO language and reasonable IDE, about as productive as VB6 to work in but much cleaner.
I've been doing cross-platform development for about 15 years and REALbasic is now my tool of choice for straightforward database form apps, including an enterprise accounting system I'm currently working on.
I also am working in Swift, WPF/C#, C++ and Cocoa/Objective-C so I'm not just a "Basic-weanie" :-)
GUI development isn't much easier than with Tcl/tk. Also, Tcl has arguably the best interface to sqlite. If deployment is an issue there's definitely no language that can compete with tcl's tclkit/starkit/starpack packaging mechanism.
Write a XulRunner app; this can run with Firefox 3.0.
http://developer.mozilla.org
C# and WPF, it;s preatty easy and good to know (I've been playing with it for 1 week and fully wrote a twitter client in a few hours.
now Cocoa, and the interface Builder, that is a cool approach even for a simple app.
If you were developing a web app I would suggest a scaffold-enabled site like rails, django or ASP.NET MVC (dynamic data). If its a windows app, nothing beats the productivity and features of WPF/Silverlight, if so consider using OrmLite, a POCO-driven lightweight ORM providing a set of useful extension methods around the common ADO.NET IDbConnection and IDbCommand interfaces. Using only convention and DataAnnotation attributes for configuration, it's effortlessly able to persist models with deep complex object graphs.
A live working example using Sqlite (with full source code) is available here:
http://www.servicestack.net/ServiceStack.Examples.Clients/Default.htm
There is also a complete end-to-end example (i.e. stand-alone, no other config required) on stackoverflow:
xml to sql using linq and C#
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
Simple question. I'm considering Firebird and SQLite for an upcoming project. SQLite has SQLite Administrator, which is pretty good but gets +1M because it has autocomplete. But Firebird supports FKs, so I'm more comfortable with it. I'm leaning toward Firebird right now.
What is your favorite Firebird IDE and why?
Edit: Personally, I'll be gravitating toward the free ones because I'm not making much on this project. But I'll leave the question as is.
Test all this !
IBEasy
http://www.marc-grange.net/telecharger.htm *
Firebird Editor Pro https://www.texteditor.pro/firebird/ *
IBExpert http://www.ibexpert.com *
Database Workbench
http://www.upscene.com *
FireFace http://www.fireface.eu
Firebird Maestro
http://www.sqlmaestro.com/products/firebird/maestro/
EMS SQL Mananger
http://sqlmanager.net/products/ibfb/manager *
BlazeTop
http://www.devrace.com/en/blazetop/
Firebird Development Studio
http://www.sqlly.com/
FlameRobin http://www.flamerobin.org/ *
Kevora IDE
http://kevora.sourceforge.net/
IBWebAdmin http://www.ibwebadmin.net/ *
RazorSQL http://www.razorsql.com/
SQuirel SQL
http://squirrel-sql.sourceforge.net/ *
OD Web ISQL
http://www.e-naxos.com/dnlManager.aspx?GROUP=6 *
DBeaver https://dbeaver.io *
For me the best is IBExpert and after Database Workbench because they have stored procedure debugger
(*) means free or have free version (personal...)
I like IBExpert for Firebird (or Interbase). They have a free personal edition.
I would not want to enter it into a contest for best Firebird IDE (yet), but you could look into FlameRobin for a free multi-platform administration program for Firebird. It has auto completion, starts as fast as no other GUI tool I know of, and the price should be right for you.
Databaseworkbench - does everthing - SQL Developer's heaven
I have used the free version of EMS SQL Manager. It is a great IDE with all the features I ever need and compares with something like Management Studio for SQL Server. Link
I can suggest you Firebird Maestro. It's not free but what you get for the price of a license is a very good product, especially because you can perform most of your tasks visually.
Aside from an IDE for Firebird, you may want to take a look at Sinática Monitor for Firebird.
It's great for finding bottlenecks.
I guess you are looking for AnySQL Maestro
Freeware
Able to work with Firebird and SQLite databases at the same time
The producer also offers a tool for SQLite (SQLite Maestro) that SUPPORTS FOREIGN KEYS (with referential integrity triggers) but it has only 30-day free trial (costs about $70).
FlameRobin is simple, easy to use, and has a small footprint. Additionally, it's free.