Autor Beitrag
Svenni9991
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Do 18.04.13 09:57 
Hallo liebes Forum,

ich bräuchte einmal dringend (!) eure Hilfe.
Ich bin momentan an einer Inventarisierung und habe eine Intranetseite erstellt um von allen Arbeitsplätzen aus Geräte zur Datenbank hinzufügen zu können.

Ich arbeite mit "Microsoft Visual Studio 2010" und habe bereits ein Formular erstellt (in ASP.NET und in einer .aspx-Datei, allerdings in der .aspx Datei habe ich in HTML geschrieben, was ja möglich ist und für mich leichter/einfacher und das ganze habe ich mit CSS positioniert bzw. etwas gestaltet) und nun will ich die Daten, die in's Formular eingetragen werden, in die Datenbank schreiben lassen und nach bestätigen des Formulars die kompletten, eingetragenen Daten noch einmal anzeigen lassen.

Ebenso, wie ihr an den Kommentaren im Quelltext erkennen könnt, würde ich gern die Nummern bei PC-Nummer z.B. anhand der bereits eingetragenen Daten in der Datenbank generieren lassen oder eine Fehlermeldung ausgeben, wenn der Datensatz mit einer bestimmten Nummer bereits vorhanden ist. Wie kann ich das anstellen? Oder kennt jemand von euch eine gute Internetseite auf der das erklärt ist? Vielleicht auch ein Tutorial?

Ich habe erfahrungen mit HTML und PHP, da ich bereits eine schulische Ausbildung als Mediengestalterin gemacht habe. Allerdings klappt das jetzt mit der Verbindung gar nicht. Ich hab gefühlsmäßig schon ganz Google nach Antworten abgesucht, aber einfach nichts passendes gefunden bzw nichts gefunden das ich verstehe :(

Hier einmal ein Ausschnitt vom Quelltext

ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
<td><h4>PC</h4></td>
        </tr>
        <tr>
        <%-- -- -- -- - wird entsprechend der letzten freien Nummer in der Datenbank generiert--%>
        <td>PC-Nummer</td>
        <td><input type="text" name="pcid"/></td>             
        </tr>        
        <tr>
        <td>PC-Name*</td>
        <td><input type="text" name="pcname"/></td>
        </tr>
        <tr>
        <td>IP-Adresse*</td>
        <td><input type="text" name="pcipadresse" /></td>
        </tr>
        <tr>
        <td>Modell*</td>
        <td><input type="text" name="pcmodell"/></td>
        </tr>
        <tr>
        <td>Seriennummer*</td>
        <td><input type="text" name="pcseriennummer"/></td>
        </tr>
        <tr>
        <td>MAC-Adresse*</td>
        <td><input type="text" name="macadresse"/></td>
        </tr>
        <tr>
        <td>PC/Laptop*</td>
        <td><input type="radio" name="pcLPT" id="pctrue" checked="checked"/>PC 
        <input type="radio" name="pcLPT" id="pcfalse" /> Laptop</td>
        </tr>        
        <tr>
        <td>Dockingstation*</td>            
        <td><input type="radio" name="dockingstation" id="dockingtrue" />Ja 
        <input type="radio" name="dockingstation" id="dockingfalse" checked="checked"/> Nein</td>
        </tr>        
        <tr>
        <td>CPU*</td>
        <td><input type="text" name="cpu"/></td>
        </tr>
        <tr>
        <td>RAM*</td>
        <td><input type="text" name="ram"/></td>
        </tr>
        <tr>
        <td>Netzwerkkarte</td>
        <td><input type="text" name="netzwerkkarte"/></td>
        </tr>
        <tr>
        <td>Beschreibung</td>
        <td><input type="text" name="pcbeschreibung"/></td>
        </tr>
        <tr>
        <td>Kaufdatum*</td>
        <td><input type="text" name="pckaufdatum"/></td>
        </tr>
        <tr>
        <td>Garantiedauer*</td>
        <td><input type="text" name="pcgarantiedauer"/></td>
        </tr>   
        </table> 

        <table>
        <tr>
        <td><input type="submit" id="btnOK" runat="server" value=" OK "/></td>
        <td><input type="reset" value=" Abbrechen "/></td>
        </tr>
        </table>


und dazu ein Bild

intranetseite

Meine Datenbank (SQL-Datenbank in "Microsoft SQL Server Management Studio") sieht wie folgt aus

Datenbank

Könnt ihr mir bitte Helfen und einen Tipp geben wie ich die Verbindung herstelle, die Daten eintrage und am besten die Daten ganz am Schluss noch einmal zusammen gefasst ausgebe?

Schon einmal vielen Dank im vorraus!

Mit freundlichen Grüßen
Svenni9991
Einloggen, um Attachments anzusehen!
smt
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 45



BeitragVerfasst: Do 18.04.13 14:01 
also erstmal:

Wenn Du in einer ASPX-Datei reines HTML schreibst, brauchst Du auch kein ASP.NET - dann wirds aber auch mit der Datenbankverbindung schwer. Das geht dann eher in Richtung ASP als in ASP.NET (ASP ist der "Vorgänger" von ASP.NET).
Empfehlen würde ich Dir auf jeden Fall, nichts mehr in reinem ASP zu schreiben - ist auch wesentlich mühsamer als in ASP.Net.

Also, Datenbankverbindung:

Du brauchst eine Datei web.config (wird normalerweise automatisch angelegt). Dort sollte irgend sowas drin stehen:
(Ich habs jetzt nur für MySql hier - für MSSQL ist es aber ähnlich)

ausblenden Quelltext
1:
2:
3:
4:
 <connectionStrings>
    <remove name="MySqlConnectionString" />
    <add name="MySqlConnectionString" connectionString="server=192.168.217.49;User Id=abcde;password=hallo;Persist Security Info=True;database=databasename" providerName="MySql.Data.MySqlClient" /> 
  </connectionStrings>


Damit kannst Du dann schon mal mit dem Connectionname auf die Datenbank zugreifen. Das können jetzt auch Deine Komponenten (die aus der Komponentenleiste). Eine ASPX-Komponente ist wesentlich mehr, als nur ein Eingabefeld. Du kannst natürlich ein Textfield als solches benutzen und die ganze Ein- und Ausgabe dann mit Code lösen. Du kannst aber auch das Textfield das alles "selbst" machen lassen. Das bedeutet, Du klatschst Dir so ein Textfield auf die Oberfläche und verbindest die Datenbankeigenschaften damit. Dann brauchst Du nicht mehr selbst aus der DB auslesen oder auch del SQL für einen Insert/Update usw schreiben. Das kann ASP.NET alles selbständig.

Also, Daten anzeigen:

1. Web.Config anpassen
2. Gridview oder Listview auf die erste Seite (mit dem Assistenten brauchst Du Dich nicht mal um die Datenbankbindung kümmern)
3. Zweite Seite mit Detailview auf die Oberfläche packen (hier werden dann die Daten editiert)

fertig - nicht eine einzige Zeile Code geschrieben - aber das Programm zeigt Dir die Daten in einem Grid an, Du kannst Sie editieren, löschen oder hinzufügen. Ist so in rund 5 Minuten erledigt ;-)


Das ganze Thema ist aber extrem komplex und auch sehr mächtig. Deshalb würde ich Dir dringend empfehlen, erst mal ein paar Tutorials oder Youtube Videos zu dem Thema anzuschauen.
Z.B. www.youtube.com/watch?v=_gqpBLNo7wo

Sascha
Svenni9991 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Do 18.04.13 15:30 
Hallo :)

Ersteinmal danke für die Hilfe, allerdings muss ich sagen das ich das mit dem GridView schon hin bekommen habe.
Aber kann ich mit dem GridView dann auch nur die Daten ausgeben die quasi gerade erst in die Datenbank eingetragen wurden?

Mir geht es halt in erster Linie um das schreiben in die Datenbank und das stellt sich wirklich als sehr schwierig heraus.
Könnte es mir auch einfach machen und das ganze dann doch in HTML und mit PHP basteln, aber dann würde ich das ASP.NET ja nicht (kennen) lernen und darum geht es ja (unter anderem).

Ich werde mir mal das Video angucken und dann weiter rumprobieren. Hoffentlich klappt es dann auch mal endlich mit den Datenbankeinträgen. Es ist nämlich schon etwas blöd wenn man dann so lange an einem Projekt sitzt, das eig. doch recht einfach zu sein scheint :)

Viele Grüße
Svenni9991
smt
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 45



BeitragVerfasst: Do 18.04.13 15:40 
es gibt ja immer für alle Probleme mehrere Lösungen.

Du kannst es natürlich so machen, daß Du mehrere Textfields hast und dann machst Du einen Button auf Dein Formular und im Button löst Du einen Event aus. In diesem Event bastelst Du Dir Deinen Sql zusammen.
Das ist die eine Methode, die auch gar nicht so schlecht ist, weil man zwar einiges selbst machen muss, aber dann wenigstens weiss, was passiert.

Die zweite und einfachere Methode ist ein Detailview. Das machst Du genauso wie ein Gridview. Dort gibt es schon alles für Insert, Delete und Update. Du musst das nur auf die Oberfläche ziehen, mit der Datenbank verknüpfen und das wars. Die SQL-Anweisungen werden von der Komponente (bzw. der Datenbankschicht dazwischen) selbst generiert. Vorteil ist, daß es schnell und einfach geht. Nachteil: Man hat nicht so viel Einflussnahme, was tatsächlich passiert und ist an eine gewisse Standartfunktionalität gebunden. Natürlich gibt es auch hier noch weitere Möglichkeiten (z.b. Validatoren usw), aber mit SQL kommst Du nicht mehr unbedingt in Berührung.

Kommt halt darauf an, was genau Du machen willst und wie Du es machen willst.

Wenn Du ausschliesslich Daten schreiben willst (also ohne Oberfläche, dann bastel Dir den SQL zusammen und mach folgendes:

(Habs wieder mal nur für MySql)


ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
string sql="insert into kunden (vorname, nachname) values ('vorname','nachname')";

MySqlConnection connection = new MySql.Data.MySqlClient.MySqlConnection(ConfigurationManager.ConnectionStrings["MySqlConnectionString"].ConnectionString);
connection.Open();

MySqlCommand command = new MySql.Data.MySqlClient.MySqlCommand(sql, connection);
command.ExecuteNonQuery();
command.Dispose();

connection.Close();
connection.Dispose();



Wenn das ganze etwas professioneller ablaufen soll, würde ich aber sowieso nicht mehr zu ASPX raten. Hier sollten meiner Meinung nach nur noch MVC-Controller zum Einsatz kommen. Da hat man einfach so viele Vorteile gegenüber dem normalen ASPX - alleine schon, wenn man Anwendungen für mehrere Plattformen schreiben will (also iPhone, iPad, PC Browser usw.)