Monday, February 13, 2012

Beginner Q: Pocket PC access to SQL Server 2005

Hi,

I am a total beginner to Pocket PC, and a 2-month beginner to SQL Server 2005 and Visual Studio 2005. I made a database Pillbox.mdf, and wrote a Windows Forms program to access it. It's really easy. I just added a Data Source, chose tables and Stored Procedures, and dragged them onto my forms. It automatically created adapter classes and a DataGrid for me.

Next, I wanted to do the same thing for Pocket PC. I did the same drag and drop thing, and was happy to see the empty DataGrid in the emulator (design-time) form. From here on, trouble. When I ran it, it said it could not connect.

So some questions:

1) Does my connection string have to change? It has 3 parts: machine name, database name, and security spec. It specifies my machine name. Is that ok? Is it known by the Pocket PC, or do I have to specify http something? Does my machine have to change any settings to become a "server"? It's just a standalone PC with no network. I understand the emulator chooses to pretend that it's not "on" my computer. Is the database name known by the Pocket PC? (Same type of question.) And is Windows authentication ok on a Pocket PC? Or must I create a name/password pair on SQL server?

2) When I went to modify my connection string, I noticed a setting to specify the Data source. For SQL Server 2005, it asks me for a dbo, but for SQL Server Mobile, it asks me for a *.sdf file. What type of file is this? Is there a way to generate this from my other database? Is it not possible to have the the Pocket PC app point to the same database as the Windows app? Oh... does the sdf represent the Pocket PC's local database? If so, then my question is just how to populate it. But I will also have to update the main database at some point. I guess I'm confused about how Pocket PC's are supposed to work.

3) Do I have to deploy SQL CE or something? I think I read that Visual Studio does it automatically. It's a bit hard reading blogs because many comments talk about things that are now contained in VS. One blog was talking about 7 dlls that need to be downloaded to the Pocket PC.

4) My application just has to get a table, store it on the Pocket PC, and allow the user to modify and update records. The bandwidth should be low, as the table is small and updates should not be frequent. Is this a reasonable design? What I am asking is if it's ok to have direct database access, or if I should package up the data in some custom format, and use a Web service to pass the data back and forth. I have read and understood articles why you should not pass a Dataset in a web service, but the point was just that web services can be interoperable, so why spoil that with MS-only Datasets. In my case, I just want to get this simple app up and running quickly.

Thanks in advance.

[Excuse me for the late response]

Make sure of the following:

1) You have Remote Connetions enabled to SQL Server 2005. Please use Surface Area Configuration and enable TCP/IP and Named Pipes.

2) You do not need SQL CE/Mobile. If you are having app directly to work with SQL Server 2005. However, here the assumption is that you use app only when you have connection to SQL Server 2005.

However, I have some questions for you:

1) You said your app needs to get the table from SQL Server 2005 and store it on device. But in what form you want to store. That is where SQL Mobile helps you. SQL Mobile is a tiny SQL database management on devices. Please go through http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=295034&SiteID=1 and you will have lots of information to know about SQL Mobile.

Thanks,

Laxmi Narsimha Rao ORUGANTI, MSFT, SQL Mobile, Microsoft Corporation

No comments:

Post a Comment