Will metro style windows 8 apps support local database access? - windows-8

I want to build a metro style win 8 app which needs to access a local database (installed on the users pc) of information such as sql express.
The current beta builds of win 8 dont seem to support that. Has Microsoft released any info on whether this will be supported? Something like ado.net, entity framework, linq sql?

No, Windows 8 Metro style apps will not support connecting to a local database. That is to say, you will not be able to use a kind of connectionstring where you can say connect to server X. This has to do with the "Market store" principle that applications should work out of the box without configuring a database connection.
Probably there will be support for a local database as in Windows Phone 7 (SQL CE) with Linq to sql on top of it.
If you would like to access a database that's in a central location, than you will have to expose the data from the database with webservices which can be consumed by your metro style application.

Related

How to move a windows .net runtime frontend application to the cloud (it uses a local sql server backend database)

I had a engineer design our .net application back in 2009, my guess is that it was coded using visual studio, and all I have is the installer application. We have been using it on our 1 or 2 local client machines very well for the past few years, but now I want to move this front end to the cloud. Instead of installing it as an application on our windows 7 machines.
It is a very simple application used in our small warehouse that keeps track of cargo/shipments etc. It uses Sql Server 2008 Express as a backend which is stored locally.
I know how to get the database in the cloud, their are many options for that, using Amazon or Azure, but how do i get the local client application to the cloud?
I dont have access to the visual studio code, i just have the runtime executable file..
I am sure there is no way to do this, and many of SO users will say i need to re-write the front end.
I have tried to contact the developer and they hav since closed down. Is their anyway i can run this in the cloud?
I welcome all options and solutions!
Thanks.
I believe you have two options for hosting this application:
If you are able to configure the database connection string, you could host the database in the cloud, and distribute the application to your end users. However, you've already stated that you know how to move the database, so I assume this isn't an option.
The only alternative is to run the entire application on a cloud server, and send the user interface to a client using terminal services. This makes it appear as if the application is running locally on the user's computer, while it is actually running on the server.
For an off-the-shelf solution to achieve this, you could consider using Microsoft's RemoteApp Azure service. I'm sure there are other similar offerings available.

How To Query A Remote Index From Windows 8

I have a machine running Windows 2008 Server using the built-in Windows Indexing functionality. I have a separate machine running Windows 8. I need to query the Windows 2008 index from the Windows 8 machine. I used to be able to do this using the MSIDXS provider but this is no longer in option in Windows 8.
Is there a new way to deal with this scenario? My internet searches haven't turned up much.
Windows Store apps use contracts and extensions to enable communications between apps and between an app and Windows. More info on the subject here. I haven't worked with MSIDXS provider, but from what you described, you will not be able to access the data residing on a server directly as you would before.
One option is to expose the index data as a service to your Windows Store app. This is probably not optimized for your case, but it is a general approach to consider when you need to communicate with resources outside of your Windows Store app.

Local databases in Windows 8, post-release

Now that windows 8 has been released, I am under the impression that a greater variety of ways for developers to use local databases in metro apps is now available to us (SQL Express LocalDB?). Up until now I have using the SQLite3 version that runs on windows 8, but know that I can I want to try and use the database features built in to Visual Studio 2012 (Won't this be better?)
To do this I am trying to follow the documentation on MSDN (here: http://msdn.microsoft.com/en-us/library/ms233763) however when I go to Project > Add New Item, I don't have a "Service-Based Database" option. What am I missing? Is there another component I need to install, or do I have it all completely wrong? I haven't used any of the sample databases mention in the documentation because I wanted to add it straight into my app. I'm using VS2012 Pro.
The Windows 8 app store api does not have any built-in database capabilities. Microsoft really wants you to use cloud storage. The documentation you're trying to follow is for windows 8 desktop applications not windows 8 store applications. You're probably best off using sqlite for the foreseeable future.

How do I use a database in Windows Mobile 6.5

I am currently developing an application for a Motorola enterprise mobility device which has Windows Mobile 6.5. I am developing the application using Visual Studio 2008 Mobile Development Kit using C#.
My problem is this :
I want to use a database for this application. But I have no idea how to use a database in a mobile device. I tried googling and even searching on this site but could not find a proper way to do it. While searching how to do this I came across this "SQL Anywhere Developer Edition" but I have no idea about it.
Could you please suggest the best way to have a database in the mobile application itself (not using client like SQL Server in the mobile) or any other way.
You want Microsoft SQL Server Compact 3.5 for Windows Mobile.

Windows CE - Database

I need to setup an application to scan a barcode from a packing slip and the associated fulfillment items on a windows CE 5.0 device and update the inventory on the server. I'm using VB.NET. However, what is the best way to interact with the database? Integration Services, ADO.NET, RDA... etc... it's a bit overwhelming trying to figure out what I should use to interact with the database. It's currently an Access database, but I imagine I'm probably going to need to migrate it to SQL Server or SQL Server Express.
I'd also need to print the packing slip to a network printer from the device. Is there any way to do this?
Sql CE is an excellent choice if your devices have to function for stretches in a disconnected state (i.e. not connected to the server). If you do use Sql CE, however, I strongly recommend not using RDA to persist local changes back to the server database (see this answer). In any event, RDA merge replication would require your server database to be Sql Server.
If your devices are always connected to the server through a wireless network, then you do not need a local database on the devices at all. Your devices can upload and download data through ASP.Net web services running on the server. Using DataSets for this communication is a good choice, since they are essentially database-agnostic (and thus your PDA code won't particularly care what database you're using on the server).
The web service approach will also let you handle the printing requirement. The PDA would send the relevant information to a web service method, which would then handle printing to the network printer.
My recommendation is to use SQL Server Compact edition (http://www.microsoft.com/Sqlserver/2008/en/us/compact.aspx) for storage engine, and ADO.net implementation of SqlCe in System.Data.SqlServerCe namespace (http://msdn.microsoft.com/en-us/library/system.data.sqlserverce.aspx) for code interaction. They are very well integrated with Visual Studio 2008, including designer support of strong-type dataset and run-time examination of data content on device etc.
No idea about the printing.
In all today scenarios, I would recommend using SQLite. It is the most used database today. Don't bind yourself to an database ecosystem. Just go here and search for "Precompiled Binaries for Windows CE (.NET Compact Framework)". Then you have a SQLite.Interop.*.dll and the System.Data.SQLite.dll. The SQLite.Interop.*.dll has to be placed and deployed besides your EXE file. The System.Data.SQLite.dll is the managed wrapper, that you have to reference in your project. Example: Create SQLite Database and table
SQL Server Compact is not compatible to most mobile platforms like iOS, Android and so on. Microsofts support for old target platforms is poor, leaving Windows CE with only SQL Server Compact 3.5 SP2 where you don't have some essential SQL functions like "LIMIT". Databases generated on the Desktop OS (> Windows XP) will also need to be converted on the device (long delay, when you first open the database), because MS is using different code pages on desktop and Windows CE.
This is Microsofts statement about RDA:
Because of design limitations, remote data access (RDA) will be removed in a future release. If you are currently using RDA, you should consider transitioning to Microsoft Synchronization Services for ADO.NET. If you were planning to use RDA in a new application, you should instead consider merge replication or Sync Services. Note that Sync Services is currently available only for the Windows Desktop Operating System.
Best way to interact with the database is just build the database on the server, compress it als deflate (available under both Desktop and Compact via System.IO.Compression) and send it to the device in whole. Plain and stupid. Most devices have poor import performance, so doing the import locally may take too much time, even if you have a fancy sync framework.
To transfer the database you can use a WCF service or just any web server using a HTTPS GET. Like so:
// ppp_peer is in most cases the active sync connected pc
string url = #"https://ppp_peer/export/database.db.gz";
string html = string.Empty;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
using (Stream stream = response.GetResponseStream())
using (FileStream fs = new FileStream(stream))
{
// Decompress your database here
}
To ORM your POCO objects just use something like https://bitbucket.org/twincoders/sqlite-net-extensions
However, if you have WLAN access everywhere, I would consider writing a browser application and using the mobile browser together with a web server for your needs. Just keep in mind, that Windows CE 5 based devices don't come with HTML 5 support out of the box. If you have a choice consider switching to a Android based device.