vizion88 schreef op dinsdag 26 januari 2010 @ 15:00:
Zoals je kon lezen gebruik ik Visual Studio 2008 icm MS SQL Server 2008.
Op dit moment draait de database op dezelfde laptop als waarop ik de applicatie ontwikkel. Een connectie kan nu plotseling wel worden gemaakt, echter komt er op het einde een error in visual studio.
Hij kan de dataset niet opmaken en geeft deze melding:
An error occured while generating the data source.
Dit is voor het eerst dat ik op een windows mobile device programmeer, dus een passende reactie lijkt me logisch...
De titel van dit topic is MSSQL en Window Mobile, maar het lijkt erop dat jouw probleem Visual Studio is.
Misschien is het verstandig dat ik je hetzelfde advies geef als elke nieuwe developer/afstudeerder/stagier welke bij ons komt werken: Stop met het gebruik van VS designers en wizards.
Designers geven vaak dezelfde rommel als Frontpage vroeger met HTML deed. En ik begrijp dat het erg verleidelijk is om designers en wizards te gebruiken als je met iets nieuws begint. Het nadeel is dat je niet weet wat er achter de schermen gebeurt, en als het (ineens) niet (meer) werkt ben je al snel de weg kwijt.
Maak eens een nieuw 'Windows Mobile 5.0 SmartPhone (of pocket) Console application' aan met de volgende code
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| using System;
using System.Data;
using System.Data.SqlClient
public namespace DebuggingMssql
{
public class Program
{
public static void Main(string[] args)
{
//prepare query
SqlCommand cmd = new SqlCommand();
cmd.Connection = new SqlConnection("Server=127.0.0.1; User ID=sa; pwd=bladiebla; Database=appdb;");
cmd.CommandText = "SELECT * FROM TABLE";
Dataset ds = new DataSet();
//open connection to database, perform query and store results in dataset
cmd.Connection.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
Console.WriteLine("Query returned {0} records\n", ds.Table[0].Rows.Count);
cmd.Connection.Close();
}
}
} |
Plaats een break point op regel 23 en gebruik de QuickWatch om de inhoud van de dataset te bekijken.
Ik heb juist met opzet geen try/catch blokken gebruikt zodat als je de applicatie start met de debugger je precies kunt zien waar ie fout gaat. Geeft bovenstaande code geen problemen dan kun je de dataset inspecteren.
Had je al gecontrolleerd of je SqlServer TcpIP connecties accepteerd? Dit is erg eenvoudig met telnet te controleren: 'telnet 127.0.0.1 1433'. Geeft telnet na 30 seconden aan dat hij geen verbinding kon maken, dan moet je even de 'SqlM Server Configuration Manager' starten en onder Sql Server Network configuration /Protocols for MSSQLServer controlren of tcp/ip enabled is. Zoals eerder aangegeven staat deze standaard op disabled (veiligheid). Het geeft namelijk de database administrator de kans security goed in te stellen voordat verbindingen van buitenaf worden geaccepteerd. Dubbel click vervolgens op tcp/ip en op het tweede tabblad 'ip addresses' helemaal naar beneden scrollen. Controleer dat de waarde van 'Tcp Dynamic Ports' leeg is (geen 0) en Tcp port op 1433 staat. Vergeet na eventuele aanpassingen de sql server service niet te herstarten.
Als laatste. Mijn eerste reactie is meer dan passend. Je weet alleen te vertellen dat je geen verbinding kunt maken met je database en wij mogen raden waar het probleem zit in de keten tussen windows device en de database. En dat dit je eerste SmartDevice project is heeft daar verder weinig mee doen. Een database probleem is op dat moment niet heel erg veel anders dan in een web of desktop applicatie of zelfs in PHP..
Je kunt een probleem pas oplossen als je een idee hebt op welk punt het fout gaat. Zoals aangegeven, controleer eerst of je vanaf (al) je machine(s) verbinding kunt maken met je database via telnet. Compileer en run dan mijn code voorbeeld.
Wat betreft WCF in .NET compact 3.5. Op
codeplex staan twee whitepapers.
Veel succes!
If it isn't broken, fix it until it is..