Working with sharepoint large lists

Please visit this : Samsung Service Galaxy S

In a recent project, I had to get some information from the last sharepoint listitems inserted. I used foreach. Of course it is a bad idea. When the list grew (thousand of listitems)…the program worked as fast as a drunken turtle. Ok… As I was saying the data I needed was from the last x items inserted. So I replaced the foreach with a simple for:
count=10; (the last 10 items inserted)
for (int i = oList.Items.Count – count; i < oList.Items.Count; i++)

I ran the program and saw that the improvement was not what I expected, so I made a testProject to measure the execution time, for the foreach block code and the code above (with the simple for);

DateTime startTime = DateTime.Now;

chunk of code (for or foreach iteration)

DateTime stopTime = DateTime.Now;
TimeSpan duration = stopTime – startTime;

For large lists the foreach statement took forever. The for statement took from 5 to 30 seconds for 4000 list items.
The odd part was that in the for statement as I said before, i iterated through the last 10 items.
So for 10 items I waited some good seconds.
I googled for the truth and I found this interesting article.

So I found out the SPQuery is one of the best ways to work with large lists.

SPQuery query = new SPQuery(oList.Views[0]);
Comm
query.RowLimit = 10;
SPListItemCollection filteredList = oList.GetItems(query);
foreach (SPListItem item in filteredList)
{
Blabla;
}

I ordered the list Descending by their ID so i got the most recent 10 list items.
I measured the execution time. At the first run it took 800 milliseconds for 4000 list items. The next executions took only from 15 to 30 milliseconds.
I would say…it is at least a good improvement;
An easier way to create CAML queries is with U2U CAML Query Builder
I tried to use CAML query to get the max ID directly but I didn`t succeed. If someone reads this…:P and knows how please leave a reply.

Commerce Server 2009
Thank you,
Ing. Msc. Dan Gheorghe

Visual Studio 2008 Smart Device project connect to sql server.

Please visit this : Samsung Service Galaxy S

A friend of mine ran into some trouble with a smart device project these days. At first with internet connectivity on the pocket pc emulation. After some heavy swearing and a lot of tries he managed to connect to the network and then to
the sql server. There are 2 steps here:

1.Connect to the network

2.Connect to the server

1.To connect to the local network through the pocket pc emulator you must install virtual pc and Windows Mobile Device Center.

Virtual PC

Windows Mobile Device Center.

Run the Windows Mobile Device Center and use the following settings:

Windows  Mobile Center Settings

Windows Mobile Center Settings

Let it run in the background.

After you create the smart device project in visual studio you must enter Tools\Device Emulator Manager, choose the type of emulator you are using right click connect and right click cradle.

cradle

cradle

In the emulator you must go to file\Configure to the Network Tab and enable the first checkbox.

pocketpc emulator network settings

pocketpc emulator network settings

Check in the windows mobile center program if it says connected in the lower left corner. If it didn’t connect reset the settings connect mode to Bluetooth or something else, click ok, and then reset tot DMA again.

2. The sql connection string mustn’t have the name of the server. You must use the ip and the port of the machine from the network where you have sql installed, for example: “Data Source=192.168.0.30,1433;”.

string ConnectionString = “Data Source=192.168.0.30,1433;Initial Catalog=Companies;User ID=admin2;Password=test”;

1433 is the default port that sql server uses.

If you try now it still won’t work.

You must enter in sql server configuration manager\sql server network configuration\protocols and enable TCP/IP, then go to sql server native client configuration\client protocols and enable TCP/IP here also.

Double click on the TCP\IP from network Configuration\protocols, enter the IP ADDRESSES tab and delete from top to bottom TCP Dynamic Ports (let it blank) and enter TCP port 1433 :

Sql Configuration Manager TCP\IP

Sql Configuration Manager TCP\IP

After this you the application should connect to the sql server.

Commerce Server 2009
By Ing. Msc. Dan Gheorghe

with the help of Catalin Manole