Webservice und Datenbank

10/12/2007 - 10:35 von martina gerling | Report spam
Hallo,

ich habe meine ersten Versuche mit Webservice in Verbindung mit einer
DB gemacht. Dazu bin ich so vorgegangen, dass ich als neues Element
eine SQL-Datenbank in mein Projekt eingefügt habe (Registration.mdf)
im Verzeichnis App_Data. Danach habe ich folgende Eintragungen in die
Web.config vorgenommen:
<appSettings>
<add key="SQLConnectionString" value="Data Source=.
\SQLExpress;Persist Security Info=True;AttachDBFilename=|DataDirectory|
registration.mdf; Integrated Security=True"/>
</appSettings>
<connectionStrings>
<add name="SQLConnectionString" connectionString="Data Source=.
\SQLExpress;Persist Security Info=True;AttachDBFilename=|DataDirectory|
registration.mdf; Integrated Security=True"/>
</connectionStrings>

Mein Programm sieht so aus:
[WebMethod]
public bool Test(string vname, string nname)
{
connInfo ConfigurationManager.ConnectionStrings["SQLConnectionString"];
conn = new SqlConnection(connInfo.ConnectionString);

System.Text.StringBuilder strBuilder = new
System.Text.StringBuilder();
strBuilder.Append("INSERT INTO Test ");
strBuilder.Append("(Vorname, Nachname) VALUES(");
strBuilder.Append("'" + vname + "', ");
strBuilder.Append("'" + nname + "')");

string sSQL = strBuilder.ToString();

command = new SqlCommand(sSQL, conn);

try
{
conn.Open();
command.ExecuteNonQuery();
conn.Close();
}
catch (Exception ex)
{
conn.Close();
return false;
}

return true;
}

Ich bekomme immer false zurück. Was mache ich hier verkehrt?

Beim Debuggen bekomme ich bei conn.Open() die Exception:
-$exception {"Die physikalische Datei \"D:\\Eigene Dateien\\Visual
Studio 2005\\Projects\\SoftAkt\\WindowsApplication1\\Aktivierung\
\App_Data\egistration.mdf\" kann nicht geöffnet werden.
Betriebssystemfehler 32: \"32(Der Prozess kann nicht auf die Datei
zugreifen, da sie von einem anderen Prozess verwendet wird.)\".
Fehler beim Anfügen einer automatisch benannten Datenbank für die
Datei D:\\Eigene Dateien\\Visual Studio 2005\\Projects\\SoftAkt\
\WindowsApplication1\\Aktivierung\\App_Data\egistration.mdf. Eine
Datenbank mit diesem Namen ist bereits vorhanden, die angegebene Datei
kann nicht geöffnet werden, oder sie befindet sich in der UNC-
Freigabe."} System.Exception {System.Data.SqlClient.SqlException}

Ich weiß nicht, wie ich die Fehlermeldung interpretieren bzw.
verstehen kann?

mfg

Martina
 

Lesen sie die antworten

#1 Lutz Elßner
10/12/2007 - 11:24 | Warnen spam
try
{
conn.Open();
command.ExecuteNonQuery();
conn.Close();
}
catch (Exception ex)
{
conn.Close();
return false;
}

return true;
}

Ich bekomme immer false zurück. Was mache ich hier verkehrt?

Beim Debuggen bekomme ich bei conn.Open() die Exception:
-$exception {"Die physikalische Datei \"D:\\Eigene Dateien\\Visual
Studio 2005\\Projects\\SoftAkt\\WindowsApplication1\\Aktivierung\
\App_Data\egistration.mdf\" kann nicht geöffnet werden.
Betriebssystemfehler 32: \"32(Der Prozess kann nicht auf die Datei
zugreifen, da sie von einem anderen Prozess verwendet wird.)\".
Fehler beim Anfügen einer automatisch benannten Datenbank für die
Datei D:\\Eigene Dateien\\Visual Studio 2005\\Projects\\SoftAkt\
\WindowsApplication1\\Aktivierung\\App_Data\egistration.mdf. Eine
Datenbank mit diesem Namen ist bereits vorhanden, die angegebene Datei
kann nicht geöffnet werden, oder sie befindet sich in der UNC-
Freigabe."} System.Exception {System.Data.SqlClient.SqlException}

Ich weiß nicht, wie ich die Fehlermeldung interpretieren bzw.
verstehen kann?

mfg

Martina


Hallo Martina,
am meisten stört mich an deinem Code, dass du die Exception einfach
vernichtest. Ich empfehle (vorlàufig) Exceptions überhaupt nicht zu
behandeln, dann steht die Fehlermeldung im Webbrowser.

Die Meldung deutet darauf hin, dass mehrere SQL Server Instanzen sich um
deine mdf Datei streiten. Es könnte z.B. sein dass die Entwicklungsumgebung
noch eine DataConnection offen hat und der Webserver eine weitere öffnen
will.

Verwendest du ein datentràgerbasiertes Web (mit Laufwerksbuchstabe zb C:\)
oder einen IIS (mit http)?

Lutz

Ähnliche fragen