This commit is contained in:
2025-04-17 17:40:16 +02:00
parent c666da8ba7
commit bbc4894921
16 changed files with 370 additions and 0 deletions

11
SQL.sql Normal file
View File

@@ -0,0 +1,11 @@
CREATE DATABASE IF NOT EXISTS FahrzeugDB;
GRANT ALL PRIVILEGES ON FahrzeugDB.* TO 'admin'@'%';
FLUSH PRIVILEGES;
USE FahrzeugDB;
DROP TABLE IF EXISTS fahrzeuge;
CREATE TABLE fahrzeuge (
id INT NOT NULL AUTO_INCREMENT,
fahrzeug_name VARCHAR(100) NOT NULL,
fahrzeug_typ VARCHAR(100) NOT NULL,
PRIMARY KEY ( id )
);

9
SQLMan/App.xaml Normal file
View File

@@ -0,0 +1,9 @@
<Application x:Class="SQLMan.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:SQLMan"
StartupUri="MainWindow.xaml">
<Application.Resources>
</Application.Resources>
</Application>

14
SQLMan/App.xaml.cs Normal file
View File

@@ -0,0 +1,14 @@
using System.Configuration;
using System.Data;
using System.Windows;
namespace SQLMan
{
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
}
}

10
SQLMan/AssemblyInfo.cs Normal file
View File

@@ -0,0 +1,10 @@
using System.Windows;
[assembly: ThemeInfo(
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
//(used if a resource is not found in the page,
// or application resource dictionaries)
ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
//(used if a resource is not found in the page,
// app, or any theme specific resource dictionaries)
)]

35
SQLMan/MainWindow.xaml Normal file
View File

@@ -0,0 +1,35 @@
<Window x:Class="SQLMan.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:SQLMan"
mc:Ignorable="d"
Title="SQL Broo" Height="450" Width="800">
<Grid>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<Button Grid.Row="0"
Content="Select SQL Script"
Click="SelectButonClick"/>
<TextBox Grid.Row="1"
Margin="3"
IsEnabled="False"
Name="SkriptTextBox"/>
<StackPanel Grid.Row="2"
Orientation="Horizontal">
<Label>Connection String</Label>
<TextBox Width="500"
Name="ConnectionTextBox"/>
</StackPanel>
<Button Grid.Row="3"
Content="Execute SQL Script"
Click="ExecuteButonClick"/>
</Grid>
</Grid>
</Window>

67
SQLMan/MainWindow.xaml.cs Normal file
View File

@@ -0,0 +1,67 @@
using Microsoft.Win32;
using MySqlConnector;
using System.IO;
using System.Windows;
namespace SQLMan;
/// <summary>
/// Interaction logic for MainWindow.xaml.
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.ConnectionTextBox.Text = "Server=localhost;User ID=root;Password=root";
}
private void SelectButonClick(object sender, RoutedEventArgs e)
{
FileInfo? datei = this.SkriptDateiWahlen();
string dateiInhalt = this.DateiEinlesen(datei);
this.SkriptTextBox.Text = dateiInhalt;
}
private FileInfo? SkriptDateiWahlen()
{
OpenFileDialog dateiDialog = new OpenFileDialog();
dateiDialog.Filter = "SQL files (*.sql)|*.sql";
if (dateiDialog.ShowDialog() == true)
{
return new FileInfo(dateiDialog.FileName);
}
else
{
return null;
}
}
private string DateiEinlesen(FileInfo? datei)
{
if (datei == null) return string.Empty;
string dateiInhalt = File.ReadAllText(datei.FullName);
return dateiInhalt;
}
private void ExecuteButonClick(object sender, RoutedEventArgs e)
{
try {
this.FuehreSkriptAus(this.SkriptTextBox.Text, this.ConnectionTextBox.Text);
MessageBox.Show("Das Skript wurde erfolgreich ausgeführt!");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void FuehreSkriptAus(string sqlScript, string connectionString)
{
using var datenbankVerbindung = new MySqlConnection(connectionString);
datenbankVerbindung.Open();
using var kommando = new MySqlCommand(sqlScript, datenbankVerbindung);
kommando.ExecuteNonQuery();
}
}

15
SQLMan/SQLMan.csproj Normal file
View File

@@ -0,0 +1,15 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net9.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UseWPF>true</UseWPF>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="MySqlConnector" Version="2.4.0" />
</ItemGroup>
</Project>

31
Ubung.sln Normal file
View File

@@ -0,0 +1,31 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.13.35919.96
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ubung", "Ubung\Ubung.csproj", "{3E59EB27-0ACB-40D5-A428-577BBEE50BC9}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SQLMan", "SQLMan\SQLMan.csproj", "{EBEED711-090F-4441-B51E-94F492E920D2}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{3E59EB27-0ACB-40D5-A428-577BBEE50BC9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3E59EB27-0ACB-40D5-A428-577BBEE50BC9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3E59EB27-0ACB-40D5-A428-577BBEE50BC9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3E59EB27-0ACB-40D5-A428-577BBEE50BC9}.Release|Any CPU.Build.0 = Release|Any CPU
{EBEED711-090F-4441-B51E-94F492E920D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EBEED711-090F-4441-B51E-94F492E920D2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EBEED711-090F-4441-B51E-94F492E920D2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EBEED711-090F-4441-B51E-94F492E920D2}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {730247B2-661F-4AE3-878C-6D160EF22F7F}
EndGlobalSection
EndGlobal

15
Ubung/Auto.cs Normal file
View File

@@ -0,0 +1,15 @@
namespace Ubung;
internal abstract class Auto
{
protected Auto(int countDors)
{
this.CountDors = countDors;
}
public int CountDors { get; protected set; }
public string Color { get; set; } = "";
public string Type { get; set; } = "";
}

26
Ubung/GenTec.cs Normal file
View File

@@ -0,0 +1,26 @@
namespace Ubung;
internal class GenTec<T>
{
private T[] values;
public GenTec(int groesse)
{
values = new T[groesse];
}
public T GetValue(int index)
{
return values[index];
}
public void SetValue(int index, T value)
{
values[index] = value;
}
public string GetType()
{
return typeof(T).Name;
}
}

21
Ubung/GenTecList.cs Normal file
View File

@@ -0,0 +1,21 @@
namespace Ubung;
internal class GenTecList<T>
{
List<T> list = new List<T>();
public T GetValue(int index)
{
return list[index];
}
public void AddValue(T value)
{
list.Add(value);
}
public string GetType()
{
return typeof(T).Name;
}
}

8
Ubung/Kombi.cs Normal file
View File

@@ -0,0 +1,8 @@
namespace Ubung;
internal class Kombi : Auto
{
public Kombi() : base(5)
{
}
}

8
Ubung/Limousine.cs Normal file
View File

@@ -0,0 +1,8 @@
namespace Ubung;
internal class Limousine : Auto
{
public Limousine(int countDors) : base(countDors)
{
}
}

73
Ubung/Program.cs Normal file
View File

@@ -0,0 +1,73 @@

using Ubung;
// Übung 1
Limousine limousine = new(4);
Kombi kombi = new();
Van van = new();
// Übung 3
var gentec = new GenTec<int>(5);
gentec.SetValue(3, 245);
gentec.SetValue(2, 45);
gentec.SetValue(1, 11);
gentec.SetValue(4, 34);
gentec.SetValue(0, 56);
Console.WriteLine(gentec.GetType());
Console.WriteLine(gentec.GetValue(4));
var gen = new GenTec<double>(5);
gen.SetValue(3, 245);
gen.SetValue(2, 45);
gen.SetValue(1, 11);
gen.SetValue(4, 34.9123);
gen.SetValue(0, 56);
Console.WriteLine(gen.GetType());
Console.WriteLine(gen.GetValue(4));
var genList = new GenTecList<int>();
genList.AddValue(245);
genList.AddValue(3);
genList.AddValue(25);
genList.AddValue(24);
Console.WriteLine(genList.GetType());
Console.WriteLine(genList.GetValue(0));
var genList2 = new GenTecList<int>();
genList2.AddValue(245);
genList2.AddValue(3);
genList2.AddValue(25);
genList2.AddValue(24);
Console.WriteLine(genList2.GetType());
Console.WriteLine(genList2.GetValue(1));
// Übung 4
var rand = new Random();
List<int> list = new();
for (int i = 0; i < 100; i++)
{
list.Add(rand.Next(101));
}
var anzahl = list.Count(o => o < list.Average());
Console.WriteLine(anzahl);
var rooms = new Dictionary<string, string[]>
{
{ "618", new [] { "Tim", "Ute"} },
{ "621", new [] { "Hans", "Jakob"} },
};
Console.WriteLine(SearchStudent(rooms, "Jakob"));
string SearchStudent(Dictionary<string, string[]> studentInClasses, string student)
{
return studentInClasses.First(o => o.Value.Contains(student)).Key;
}

10
Ubung/Ubung.csproj Normal file
View File

@@ -0,0 +1,10 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>

17
Ubung/Van.cs Normal file
View File

@@ -0,0 +1,17 @@
namespace Ubung;
internal class Van : Kombi
{
private bool ladefläche = false;
public bool Ladefläche
{
get => ladefläche;
set
{
base.CountDors = value ? 2 : 5;
ladefläche = value;
}
}
}