hallo, ich versuche grade eine SQL abfrage in meinem c# programm zu erstellen.. aber es kommt immer der fehler:"Ungültiger Objektname 'Mitarbeiter'.".
Ich verwende eine Microsoft SQL Server Datenbankdatei
so sieht mein prog aus:
public void Hinzufuegen(Mitarbeiter_Daten mitarbeiter)
{
string SQL = "select * from Mitarbeiter";
DatabaseAccess(SQL);
}
public void DatabaseAccess(string abfrage)
{
SqlConnection con = new SqlConnection();
con.ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Users\\Angus\\Documents\\Datenbank.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
con.Open();//Die Verbindung öffnen
//Felder füllen
SqlCommand cmd = new SqlCommand(abfrage, con);
string Text = Convert.ToString( cmd.ExecuteScalar());
Console.WriteLine(Text);
con.Close();
}
kann mir evtl jemand sagen woran das liegt?
Scheint die Tabelle Mitarbeiter nicht zu geben.
Gruß, Killerkruemel
das ist ja das seltsame =) .. es gibt sie... und wenn ich diese Abfrage direkt bei der Datenbank mache geht es ja xD
//edit und selbst wenn dürfte der compiler jeigentlich nicht meckern oder? ... weil es ja ein string ist
Hi,
musst du zufällig noch den "Erzeuger" der Tabelle angeben? Also OwnerName.Tabelle
MfG
wax
Hallo Angus,
"AttachDbFilename=C:\Users\Angus\Documents\Datenbank.mdf" im Connectionstring bitte weglassen.
Du musst noch angeben mit welcher Datenbank Du arbeiten willst, sonst bist Du in der Datenbank master :
initial catalog= ...
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
also habe das "AttachDbFilename=C:\Users\Angus\Documents\Datenbank.mdf" gelöscht.
nun sieht das so aus:
con.ConnectionString = "Data Source=.\\SQLEXPRESS;Initial Catalog=Datenbank.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
dann kommt der fehler:
Die von der Anmeldung angeforderte 'Datenbank.mdf'-Datenbank kann nicht geöffnet werden. Fehler bei der Anmeldung.
Fehler bei der Anmeldung für den Benutzer 'Angus-Laptop\Angus'.
passwort hat die Datenbank noch nicht
//edit: gebe ich allerdings den komplette pfad an kommt wieder der alte fehler =(
Es muss heissen
Initial Catalog=Datenbank
Wenn die Datenbank 'Datenbank' heisst.
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
dann kommt auch der fehler mit der Anmeldung
Die von der Anmeldung angeforderte 'Datenbank'-Datenbank kann nicht geöffnet werden. Fehler bei der Anmeldung.
Fehler bei der Anmeldung für den Benutzer 'Angus-Laptop\Angus'.
Wenn Du eine Datenbank auf localhost öffnest mit Integrated Security = True, dann sollte das auf jeden Fall gehen.
Öffne die Datenbank mal mit dem SQL Management Studio (Express).
Wenn das auch nicht geht dann gibt es die Datenbank nicht. Hast Du sie denn angelegt ?
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
also im server explorer ist sie vorhanden sowie in der projekt ansicht =) .... im ordner Documents liegt auch eine Datenbank.mdf ... lade grade das SQL Management Studio und probiere dann die db damit zu öffnen
Hallo Agnus131,
da Du die Abfrage mit ExecuteScalar laufen lässt bekommst Du bei der Abfrage immer nur den Wert, welcher in der ersten Zeile und dort in der ersten Spalte steht.
Vielleicht hilft dir ja folgende kleine Beschreibung (nur grob angerissen, da ich es derzeit nicht testen kann):
SQLConnection-Objekt instanziieren
Connectionstring setzen
connection öffnen und schließen, sonst kann es Probleme mit den SQL-Command geben
SQLCommand = SQLConnection.CreateSqlCommand();
SqlCommand.commandType = System.Data.CommandType.Text;
SqlCommand.Commandtext ="SELECT * FROM TBL_Name"
SqlDataAdapter = new SqlDataAdapter(SqlCommand)
DataTable tmpDataTable = new DataTable();
SqlDataAdapter.fill(tmpDataTable);
Dann hast Du alle Daten aus der DB_Table und der DataTable und kannst dann dort auf die Werte zugreifen.
Viele Grüße
Jürgen
Man muß nichts wissen,
man muß nur wissen wer es wissen könnte
oder wo es steht😉
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
Hi BerndFfm,
mit dem Schema liege ich doch aber auch nicht falsch oder?
Grüße
Jürgen
Man muß nichts wissen,
man muß nur wissen wer es wissen könnte
oder wo es steht😉
Hallo Jürgen,
mit dem Schema liegst Du richtig. Das Connection.Close muss allerdings nach dem .Fill kommen. Der SqlDataAdapter braucht noch einen Namen.
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
@bigeddie:
Wer zeigt eigentlich immer diesen vollkommen überflüssig langen sermon an Zeilen?
SqlDataAdapter = new SqlDataAdapter("SELECT * FROM TBL_Name", connectionstring)
DataTable tmpDataTable = new DataTable();
SqlDataAdapter.fill(tmpDataTable);