Guten Tag!
Ich bin ganz neu auf dem Gebiet von C# und MS SQL Server und wollte mit C# ein Programm schreiben, dass auf eine Datenbank des SQL Servers von Microsoft zugreift. Allerdings habe ich überhaupt keine Ahnung wie ich das anstellen soll. Im Internet habe ich zwar schon einiges gefunden aber ich komme da immer nicht weiter. Es wäre toll, wenn ihr evtl einen link empfehlen könntet, wo sowas von der Erstellung der Datenbank bis zum Zugriff mit C# Code verständlich beschrieben steht oder vllt. kann das ja auch mal jemand ganz einfach an einem Beispiel selbst erklären… Jedenfalls wäre ich über eure Hilfe diesbezüglich sehr dankbar!
Mit freundlichen Grüßen
Toni
Hi,
http://openbook.galileocomputing.de/visual_csharp/vi…
Ich befürchte aber vor der Kür kommt die Pflicht.
Und die Pflicht wäre erstmal die C# Grundlagen pauken.
Gruss
Joey
Hallo Toni!
Die Technologie mit der man unter .net gewöhnlich auf SQL-Server zugreift heißt: ADO.NET.
http://de.wikipedia.org/wiki/Ado.net
Ganz, ganz stark vereinfacht wird mittels dieser Klassen eine Connection (benötigt einen Connection-String) installiert, mit der man dann Commands absetzen, oder via Reader / DataAdapter Daten auslesen kann.
http://books.google.at/books?id=QildpLBSGv8C&pg=PA16…
http://books.google.at/books?id=ESQGvfI08W0C&pg=PA3&…
LG,
frohsinn
@Joe & Frohsinn
Vielen Dank!
Ich werde damit erst einmal versuchen etwas hinzubekommen.
Gruß
Toni
Hallo nochmal!
Also ich habe bisher leider nur die Verbindung von C# zum SQL Server hinbekommen. Hier erstmal der Quelltext.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient; //Datenprovider für den SQL Server
namespace CNC\_Verwaltung
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
//Datenbankverbindung herstellen
try
{
SqlConnection con = new SqlConnection();
con.ConnectionString = "Data Source=(local);" + //IP-Adresse des SQL Servers angeben!
"Initial Catalog=CNC-Programmverwaltung;" + //Datenbankname
"Integrated Security=sspi"; //Windows Benutzeranmeldedaten verwenden
con.Open();//Die Verbindung öffnen
//Felder füllen
string strSQL = "SELECT Versions-Nr FROM Version";
SqlCommand cmd = new SqlCommand(strSQL, con);
string Text = Convert.ToString(cmd.ExecuteScalar());
ListBox.Lines = Text;
//}
}
catch (Exception e)
{
}
}
Ich wollte die Datenbankanbindung sofort herstellen, wenn das Programm geöffnet wird und dann die Felder (wie z.B. eine ListBox) mit den ausgelesenen Werten füllen. Leider bekomme ich immer nur eine Fehlermeldung „Eine implizite Konvertierung vom Typ „string“ in „string[]“ ist nicht möglich“. Wie kann ich aber die Felder mit speziellen Daten füllen und auch auswählbar machen? Bitte helft mir!
Danke!
Toni
Hi,
einer Textbox den Namen „Listbox“ zu geben obwohl es so etwas als Control-Klasse gibt, ist schon einmalig.
ListBox.Lines = Text;
//geht nicht weil Text=String ist und Lines=array von Strings ist
ListBox.Text=Text; //Das geht
Das sind ganz grundlegende Basics die du erstmal lernen mußt. Das kann man nicht in einem Forum sondern nur mit einem Buch, Geduld und viel Lust.
Gruss
Joey
1 „Gefällt mir“
Ohhh… stimmt!
Also ich habe da ja so ein Tutorial in einem Buch, mit dem ich das ganze verstehen will. Nur leider bekomme ich die Fehlermeldung, dass ich keine rechte habe. Ich habe es einfach mal mit der NORTHWIND Datenbank versucht. Also der gleiche Quelltext nur mit anderer Datenbank und ohne Exception. Die Fehlermeldung bekomme ich dann bei con.open.
Muss ich da evtl bei dem SQL Server noch etwas eingeben?
Hab es auch schon so versucht:
Wenn ich die Datenbank in C# über Daten --> Datenquelle hinzufüge, dann geht das alles. Aber mit meiner Datenbakn
geht das dann nicht. Da kommt die Fehlermeldung:
Die physikalische Datei „C:\CNC_Programmverwaltung.mdf“ kann nicht geöffnet werden. Betriebssystemfehler 5: „5(Zugriff verweigert)“. Fehler beim Anfügen einer automatisch benannten Datenbank für die Datei C:\CNC_Programmverwaltung.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.
Guten Morgen!
So… ich habe bisher folgenden Quelltext, mit dem ich schon Daten aus der Datenbank auslesen könnte, laut diversen Quellen:
try
{ //Datenbankverbindung herstellen
SqlConnection con = new SqlConnection();
con.ConnectionString = "Data Source=.\\SQLEXPRESS;" +
"Initial Catalog=CNC\_ProgrammverwaltungDB;" +
"Integrated Security=sspi";
SqlDataAdapter da = new SqlDataAdapter("SELECT [CNC-Prog-Nr] FROM Programm ", con);
DataSet ds = new DataSet();
if (con.State == ConnectionState.Closed)
{ //Falls Verbindung schon offen
con.Open();
da.Fill(ds, "Version");
con.Close();
}
CNCProgNrTBx.Text = ???;
} //Falls Datenbankverbindung nicht möglich
catch (Exception)
{
MessageBox.Show("Datenbankverbindung konnte nicht hergestellt werden!", "Fehler", MessageBoxButtons.OKCancel);
}
Allerdings weiß ich nun nicht wie Beispielsweise ein einzelnes Feld in eine TextBox lesen kann, wie man im Quelltext erkennt. Kann mir jemand dabei nochmal helfen? Danke!
Mit freundlichen Grüßen
Toni
Guten Morgen!
Hat denn keiner eine Idee?
Mit freundlichen Grüßen
Toni
Hallo!
Schau’ Dir bitte nochmal den Link in der Antwort von Joey vom 21.7. an.
Dieser Link verweist doch schon auf die entsprechende Stelle im eBook, an der DataAdapter beschrieben werden.
Was möchtest Du denn noch?
Gruß,
Martin
Ja stimmt schon aber manchmal sieht man den Wald vor lauter Bäumen nicht. Danke jedenfalls nochmal für eure Unterstützung!!! Ich setze den Quellcode einfach nochmal als abschließendes Ergebnis mit rein:
//Datenprovider für den SQL Server
using System.Data.SqlClient;
public partial class ProgrammverwaltungDlg : Form
{
public ProgrammverwaltungDlg()
{
InitializeComponent();
connect();
//DataSet mit Daten füllen
DataSet ds = new DataSet();
//SQL Abfrage
SqlDataAdapter da = new SqlDataAdapter("SELECT [CNC-Prog-Nr] FROM Programm ", con);
//lokalen Speicher mit Ergebnis der SELECT-Abfrage füllen
da.Fill(ds, "AbfrageCNCProgNr");
//Datenquelle an BindingSource anbinden
bindingSource1.DataSource = ds;
bindingSource1.DataMember = "AbfrageCNCProgNr";
//Texteigenschaft der TextBox an BindingSource binden
CNCProgNrTBx.DataBindings.Add("Text", bindingSource1, "CNC-Prog-Nr");
}
//Datenbankverbindung herstellen
SqlConnection con = new SqlConnection();
//Verbindung zum Sql Server herstellen
private void connect()
{
//SQL Server
con.ConnectionString = "Data Source=.\\SQLEXPRESS;" +
//Datenbankname
"Initial Catalog=CNC\_ProgrammverwaltungDB;" +
//Windows Benutzeranmeldedaten
"Integrated Security=sspi";
try
{ //Datenbankverbindung herstellen
if (con.State == ConnectionState.Closed)
{ //Falls Verbindung schon offen
//Verbindung öffnen
con.Open();
}
}
catch (Exception) //Falls Datenbankverbindung nicht möglich
{ //Ausgabe einer Fehlermeldung
MessageBox.Show("Datenbankverbindung konnte nicht hergestellt werden!", "Fehler", MessageBoxButtons.OKCancel);
}
finally
{
con.Close(); //Verbindung schließen
}
}