Net Framework, Office 365, C#, WPF, ASP.Net, Visual Studio, Programmiersprachen PC, C# Programmieren, vba, SQL Server, free source code snippets Antivirus free
#

WPF Lokale SQL Datenbank zur Anwendung hinzufügen

 

Wenn man in WPF eine Datenbank benötigt, welche nur für die WPF Anwendung als Datenspeicher dient, dann sollte man eine lokale Datenbank erstellen.

Die Datenbank wird mit Add New Item->Service Based Database erstellt und angebunden.

Dabei handelt es sich um eine local SQL Server Datenbank, welche die Datei im Projektverzeichnis platziert.

 

Anfügen

Erst unter dem Projekt mit Add new Item

 

 

Dann fügt man ein Service Based Database Element ein

 

Dadurch wird in das Projekt eine Datenbank mit mdf eingefügt

 

Die sich auch als SQL Server .mdf Datenbank im Dateiverzeichnis befindet.

 

Diese Datenbank kann man dann per Doppelklick öffnen in den SQL Server Explorer, welcher ungefähr dem SQL Server Managment Studio entspricht.

 

 

Tabelle hinzufügen

Mit Datenbank->Tables->Add New Table wird dann eine neue Tabelle erstellt mit einem ID Feld als Vorlage

 

 

Beim neuen Erstellen der Tabelle wird automatisch das T-SQL script generiert

 

Achtung bei Änderungen

Man sollte dennoch dringend nur im Design Bereich Daten ändern, denn bei Änderungen im T-Sql script werden auch komplette Daten gelöscht

 

CREATE TABLE [dbo].[Table]

(

       [IDDetail] INT NOT NULL PRIMARY KEY,

    [URL] NVARCHAR(255) NULL,

    [Title] NVARCHAR(255) NULL,

    [Text] NVARCHAR(MAX) NULL

)

 

 

Speichern von Änderungen

Die Änderungen werden mit Update im Menübereich gespeichert

 

 

Benennen einer Tabelle

Der Name einer Tabelle wird unten im script eingetragen

Bei einem nachträglichen Rename oder Umbenennen der Tabelle im script wird eine komplett neue Tabelle als Kopie erstellt.

 

 

Connection String zur Datenbank

Die Verbindung zur Datenbank findet man, indem man auf die Datenbank->Properties öffnet und unter Connenction String die Werte entnimmt.

In diesem Beispiel zeigt er auf Data Source local DB mit dem Dateipfad

Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C..\_data\dbWebRobot_ComputerFutures.mdf;Integrated Security=True

 

 

Diese Verbindung als String kopiert man am Besten in die Settings des eigenen Projekts

 

Dadurch kann man im Projekt die Datanbank mit einem SQLClient und den Settings verbinden.

//< db oeffnen >

string cn_String = Properties.Settings.Default.connection_String ;

SqlConnection cn = new SqlConnection(cn_String);

//</ db oeffnen >

 

 

Durch auslagern der Datenbank System Zugriffe in eine clsDB Classe, kann man den wesentlichen Zugriff zur Datenbank auf Schreib- und Lesevorgänge vereinfachen wie hier:

private void db_Update_Add_Record(string sURL, string sTitle)

        {

            //--------< db_Update_Add_Record() >--------

            //*Update or add Record

            //< correct>

            sURL = sURL.Replace("'", "''");

            sTitle = sTitle.Replace("'", "''");

            //</ correct>

 

            //< find record >

            string sSQL = "SELECT TOP 1 * FROM tbl_Details WHERE [URL] Like '" + sURL + "'";

            DataTable tbl= clsDB.Get_DataTable(sSQL);

            //</ find record >

 

            if (tbl.Rows.Count==0)

            {

                //< add >

                string sql_Add = "INSERT INTO tbl_Details ([URL],[Title],[dtScan]) VALUES('" + sURL + "','" + sTitle + "',SYSDATETIME())";

                clsDB.Execute_SQL(sql_Add);

                //</ add >

            }

            else

               {

                //< update >

                string ID = tbl.Rows[0]["IDDetail"].ToString();

                string sql_Update = "UPDATE tbl_Details SET [dtScan] = SYSDATETIME() WHERE IDDetail = " + ID;

                clsDB.Execute_SQL(sql_Update);

                //</ update >

            }

            //--------</ db_Update_Add_Record() >--------

        }

 

Hierzu sollte man alle Datenbank speziefischen Aufgaben auf eine eigene Static oder shared Klasse verschieben

 

 

Code der gemeinsam genutzen Klasse (in C# als Static)

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

//< add using >

using System.Data.SqlClient;    //*local DB

using System.Data;              //*ConnectionState, DataTable

//</ add using >

 

namespace WebRobot_ComputerFutures

{

    public static class clsDB

    {

        //-------------------< Class: DB >-------------------

 

        public static SqlConnection Get_DB_Connection()

        {

            //--------< db_Get_Connection() >--------

            //< db oeffnen >

            string cn_String = Properties.Settings.Default.connection_String;

            SqlConnection cn_connection = new SqlConnection(cn_String);

            if (cn_connection.State != ConnectionState.Open) cn_connection.Open();

            //</ db oeffnen >

 

            //< output >

            return cn_connection;

            //</ output >

            //--------</ db_Get_Connection() >--------

        }

 

        public static DataTable Get_DataTable(string SQL_Text)

        {

            //--------< db_Get_DataTable() >--------

            SqlConnection cn_connection = Get_DB_Connection();

 

            //< get Table >

            DataTable table = new DataTable();

            SqlDataAdapter adapter = new SqlDataAdapter(SQL_Text, cn_connection);

            adapter.Fill(table);

            //</ get Table >

 

            //< output >

            return table;

            //</ output >

            //--------</ db_Get_DataTable() >--------

        }

 

        public static void Execute_SQL(string SQL_Text)

        {

            //--------< Execute_SQL() >--------

            SqlConnection cn_connection = Get_DB_Connection();

 

            //< get Table >

            SqlCommand cmd_Command = new SqlCommand(SQL_Text, cn_connection);

            cmd_Command.ExecuteNonQuery();

            //</ get Table >

 

            //--------</ Execute_SQL() >--------

        }

 

 

 

        public static void Close_DB_Connection()

        {

            //--------< Close_DB_Connection() >--------

            //< db oeffnen >

            string cn_String = Properties.Settings.Default.connection_String;

            SqlConnection cn_connection = new SqlConnection(cn_String);

            if (cn_connection.State != ConnectionState.Closed ) cn_connection.Close ();

            //</ db oeffnen >

 

            //--------</ Close_DB_Connection() >--------

        }

        //-------------------</ Class: DB >-------------------

    }

 

 

Durch die obere Anwendung werden wie hier gezeigt alle Einträge einer Webseite in eine Tabelle angefügt oder aktualisiert.

Mobile
»
WPF: erstellen einer selektierbaren Liste
»
WPF Lokale SQL Datenbank zur Anwendung hinzufügen
»
WPF/UWP: Canvas mit relativen Positionen und Größen
»
C#, WPF, UWP: ScreenShot einer App oder Fenster-Bereich als Datei speichern
»
C#: Windows ScreenShot als Datei speichern
»
WPF Color Picker on a White-Black Color Cube
»
WPF: ColorWheel in C# zeichnen
»
WPF: Snap Element Size to Next Lines
»
WPF Code: Usercontrol mit anpassbarer Größe zur Laufzeit
»
WPF: Speichern des Hintergrunds einer Windows App als ScreenShot

.

Jobs, Projekte, Angebote für Freiberufler, Selbstständig an Raimund.Popp@Microsoft-Programmierer.de