|
I need to choose the most appropriate data engine for an application, and can use some advice.
Background:
I am replacing an existing application, rewriting it from ground up using VS 2010, C# and .NET 4.0.
The prior app used Access style databases. Microsoft discourages this type of database for new apps, or I would continue with it.
Very few of our customers need or use database servers. Typically, a customer would maintain a collection of separate databases, one for each project. Databases only need to be accessed locally. The self contained single file approach of the Access database was ideal, since it is highly portable and easily archived or deleted after a project ends. The largest database I have ever seen reached 100 mb. Typical databases are less than 20 mb, many around 2-4 mb.
The data model is largely relational, and idealy suited to object modeling (without inherited classes).
I like the EF and Code First options in VS 2010, but it all seems to be focused on working with a single server based db. I need to be able to browse and open databases. In rare cases, a customer may even open more than one db at a time, using mdi children for each db. This is not an absolute requirement, but is highly desirable.
Any ideas or suggestions?
|
|
|
|
|
SqlCE would be appropriate; doesn't require a server and is meant as a local file-based db (just as Access). You can open as many as you want simultaneous, and consists of a single file with the ".sdf" file extension.
Without the need to have it all in a single file that can be copied/moved around, I'd go for Sql Server and merge all the databases.
Bastard Programmer from Hell
|
|
|
|
|
As well as SqlCE, there is SQLite[^], which is also a file based db system. I have used this in the exact same scenario which you have related. SQLite has a fully functional ADO.Net implementation[^], and can be embedded in the application if necessary, which means less install hassles. It is also open source, with the source code in the public domain.
When I was a coder, we worked on algorithms. Today, we memorize APIs for countless libraries — those libraries have the algorithms - Eric Allman
|
|
|
|
|
Hi Guys,
I have some C++ code that is working in Real-Time with a decoder. Its job is to Insert into SQL 2008 R2 and its currently using ADO 2.8 to do it.
However i dont want it to block while doing the Insert, because it holds up other packets arriving from the decoder. So i am trying to convert it to perform its calls Asynchronously so i can blindly Insert my packets which will be faster. Although depending on the speed, it is possible that i may need to Insert a 2nd packet before the 1st one had finished.
I have written some sample code in C# (ADO.NET) and proved that Async mode works, but i cannot get any sample code (ADO 2.8) to work in Async mode in C++ and it is driving me nuts!! I want to use the ExecuteComplete event but that does not fire either?
Please would somebody help me find out what the heck i need to do make some progress on making Async work?
Many many thanks,
Rich.
|
|
|
|
|
|
I've been asked to rewrite a 16-bit xBase application (it was last copyrighted in 2003) such that it will run on (at least) Windows 7 32-bit. As I understand it, xBase is more than just a repository for the data; it's also a language of sorts. Is there some sort of silver bullet available that would convert the whole thing to something current, thus requiring no real rewrite?
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous
|
|
|
|
|
I suspect you're up the creek for any UI stuff - it was a quirky 80x25 text-based "forms" front end. If you're only concerned with the backend database, check out Codebase[^]. I've used it to drag an old dBase4 app (kicking and screaming) into Win32 land. No database migration required. Compile their library source with your 32bit weapon of choice and slip it in behind your business/UI layers.
HTH
Peter
Software rusts. Simon Stephenson, ca 1994.
|
|
|
|
|
Peter_in_2780 wrote: ...it was a quirky 80x25 text-based "forms" front end.
Actually, the screen shots I have show it to have a Windows GUI. Maybe it's not xBase after all.
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous
|
|
|
|
|
It probably still is xBase. The dinosaur I slayed was written in dbIII+ in about 1988 and ran on DOS. Some of the later ones probably had a real GUI.
Cheers,
Peter
Software rusts. Simon Stephenson, ca 1994.
|
|
|
|
|
AFAIK Peter is right, your UI is up for a rewrite and rightly so. Your database should be converted to something current and I am betting only the table structure will be transportable. You may need to fiddle with the drivers to get a valid connection, we had to use the FoxPro drivers on the last xbase app we moved.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
The above error occurs, while trying to merge table1 data(from db1 to table1 data of db2.
Thanks in Advance.
|
|
|
|
|
|
I have a problem, i need to protect a database(Sql or access), TDE is a good choice but only(Enterprise and Developer Edition), and i use Sql 2008 Express, any suggestions ?
|
|
|
|
|
You could put the database on a virtual drive[^] and crypt that. When moving the database, move the virtual drive.
Bastard Programmer from Hell
|
|
|
|
|
Hi can someone help me to solve a foreign key constraint problem? I’m using using Web Developer 2010 Express with mvc3. When my view loads I can create an object by clicking on the Create button but on the edit page, I click on save button and get an error message: That says my UPDATE statement conflicted with the FOREIGN KEY constraint giving the tables relationship and the column.
Here’s what I’ve tried so far: I researched and found that this error is a bug in SQL Server 7.0. but I'm using Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1
I found another tip that suggested that the id field in the main table is perhaps being called before the id fields of the associated table(s) was created. I tried changing the order by seeding all the other tables with data before my main table in my DBInitializer class. I also changed the order in my DBContext class… same error. Finally I decided to change the relationship directly in the database. I removed the relationship and created a new one (had to add fields in the main table to match the number of columns in the associated table). Nothing worked. I then removed the SetInitializer line from my Global.asax and created all tables from scratch directly in the database and as I created them, I found that I had to add data to the associated tables before adding stuff to my main table which seems to support an earlier suggestion but I still got the error message.
I then changed my SetInitializer back to seed the tables still got the same error. I have no problems when I click the “Create” button, only “Save” on the Edit page.
Any help would be greatly appreciated.
|
|
|
|
|
To really understand how to solve this problem, you must know what commands are executed against your database. One way to solve this issue is to turn on CASCADE UPDATE in your foreign key definition.
|
|
|
|
|
I am running a report in SQL SERVER 2008 that I inherited from a past co-worker in another state. The code is accessing two different servers, but SQl Server management studio seems to be only recongzing only one server/database/table at a time. Is it possible to access two servers while running one report in SSMS/ Below is the server names and databases:
ELMO.[HBS Patient Information].dbo.ECS_Plan_Information E (NoLock)
(Getting invalid oblect name when I hover over this)
[167.211.200.214].Billing03990.dbo.pclaim P
Ed English
|
|
|
|
|
You can link[^] servers within SSMS. Once set up, you can query both servers in a single statement, by prefixing the server-name before the database-name.
Bastard Programmer from Hell
|
|
|
|
|
I need one column from the table1 which need not be used comparassion but I need the colume (ID colum in this case)to get lised in the query result.
Ex :
<pre lang="SQL">select ID a,b,c from table1 except select a,b,c from table2
in the above example ID color of Table1 need not be compared with table to but just required in the query result for each rows.
Thanks in advance
modified 3-Feb-12 7:37am.
|
|
|
|
|
I think some of your post was truncated.
As a guess if you are suggesting that you want to return rows from two tables where there is no common columns between them then the answer is simple - use two queries.
|
|
|
|
|
If you are looking for records in table 1 where A,B,C records are not in table 2 then the following should help
Select * from table1 T
where not exists(Select * from Table2 TT where T.A = TT.A and T.B = TT.B and T.C = TT.C)
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
Gr8 sir .. it worked .. you made my weekend ... I wish you a wonderfull weekend.
|
|
|
|
|
Here is a strange result that I am getting with Oracle. Unless I wrap the select from TABLE1 as shown (specifying "rownum > 0"), the query never seems to complete. However, when it is included, it only takes a second or two.
It doesn't make any sense to me, because all that it seems to do is force Oracle to evaluate the nested select with the alias "a" before performing the join. I had thought that placing it in parenthesis would do that automatically. Perhaps the Oracle optimizer does something wonky that this compensates for..? Scratching my head here, because all that the "where" condition adds is basically saying "give me any rows that you find".
select COUNTRY_NAME, count(*) TALLY from
(
select * from (
select IP_SOURCE_NUM from TABLE1
where log_date between '01-JAN-2012' and date '01-FEB-2012'
and IP_SOURCE_NUM > 0
) where rownum > 0
) a
JOIN ip_geo b on b.ip_from =
(
select max(ip_from) as ip_from_match from ip_geo
where ip_from <= a.IP_SOURCE_NUM
)
group by COUNTRY_NAME
order by count(*) desc
|
|
|
|
|
While passing up the opportunity to make sarcasic remarks about a 'wonky' Oracle you might be better served by asking Tom[^] as it sounds like a rather deep and very specific Oracle issue.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
I think your link is broken.
|
|
|
|