MS SQL Server mit C# verbinden und auslesen etc

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 Like

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
 }
 }