Laden...

Auf lokale Datenbank zugreifen

Erstellt von MasterLord vor 14 Jahren Letzter Beitrag vor 14 Jahren 4.677 Views
M
MasterLord Themenstarter:in
14 Beiträge seit 2008
vor 14 Jahren
Auf lokale Datenbank zugreifen

Hallo Leute,
ich bin zwar nicht neu in der Datenbank Programmierung(ich habe schon mit MySQL gearbeitet) aber ich komme jetzt mit der Microsoft SQL Compact 3.5 Datenbank nicht ganz zurecht. Ich habe diese Datenbank auf einem Server möchte aber nur vom selben Server drauf zugreifen, also nicht von aussen! Muss ich dazu jetzt auch eine "Verbindung" aufbauen oder wie mache ich das? Nach langem Googeln habe ich diesen Code schreiben können:


            string connectstr =
                "Data Source =" + Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + @"\accounts.sdf";

            //Baut die Verbindung zu Datenbank auf
            SqlConnection sql = new SqlConnection(
                connectstr);

            sql.Open();

            SqlCommand command = new SqlCommand("Select * From Accounts", sql);

            SqlDataReader reader = command.ExecuteReader();

            while (reader.Read())
            {
                Console.WriteLine(reader["name"].ToString());
            }

            sql.Close();

Bei dem Verbindungsaufbau gibt es aber nach einiger Zeit eine "SqlException":


System.Data.SqlClient.SqlException wurde nicht behandelt.
  Message="Netzwerkbezogener oder instanzspezifischer Fehler beim Herstellen einer Verbindung mit SQL Server. Der Server wurde nicht gefunden, oder auf ihn kann nicht zugegriffen werden. Überprüfen Sie, ob der Instanzname richtig ist und ob SQL Server Remoteverbindungen zulässt. (provider: SQL-Netzwerkschnittstellen, error: 26 - Fehler beim Bestimmen des angegebenen Servers/der angegebenen Instanz)"
  Source=".Net SqlClient Data Provider"
  ErrorCode=-2146232060
  Class=20
  LineNumber=0
  Number=-1
  Server=""
  State=0
  StackTrace:
       bei System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
       bei System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
       bei System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, SqlConnection owningObject)
       bei System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject)
       bei System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart)
       bei System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)
       bei System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
       bei System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)
       bei System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)
       bei System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)
       bei System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)
       bei System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
       bei System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
       bei System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
       bei System.Data.SqlClient.SqlConnection.Open()
       bei DB_TEST.Program.Main(String[] args) in C:\reposC\Xtras\DB_TEST\DB_TEST\Program.cs:Zeile 23.
       bei System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
       bei System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       bei Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       bei System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       bei System.Threading.ThreadHelper.ThreadStart()
  InnerException: 


Ich hoffe ihr könnt mir helfen!

mfg

MasterLord

U
105 Beiträge seit 2004
vor 14 Jahren

Ich glaube du musst SqlCeConnection anstelle von SqlConnection verwenden.

Das gleiche gilt für SqlCommand -> SqlCeCommand, SqlTransaction -> SqlCeTransaction, etc.

Ich hoffe das hilft.

M
MasterLord Themenstarter:in
14 Beiträge seit 2008
vor 14 Jahren

In welchem Namespace befinden sich diese?

//EDIT: Hab den Namespace. Danke ich werde das später testen...

U
105 Beiträge seit 2004
vor 14 Jahren
M
MasterLord Themenstarter:in
14 Beiträge seit 2008
vor 14 Jahren

Ok das mit dem Abfragen, Löschen, Erstellen etc habe ich jetzt alles hinbekommen. Nur wenn ich das Programm jetzt beende dann ist die Datenbank beim nächsten mal starten leer! Woran kann das liegen?

mfg

MasterLord

3.511 Beiträge seit 2005
vor 14 Jahren

Weil irgendwo in den Projekteinstellungen steht, das die DB bei jedem kompilieren ins Ausgabeverzeichnis kopiert werden soll. Somit wird jedesmal beim Kompilieren eine neue erstellt.

"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)

M
MasterLord Themenstarter:in
14 Beiträge seit 2008
vor 14 Jahren

UUUhhhh ich Idiot, danke dir!!!!! Sry für die dumme Frage.