Laden...

SQL Befehle mit C# an DB Weiterleiten

Erstellt von Multithread vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.214 Views
M
Multithread Themenstarter:in
6 Beiträge seit 2011
vor 13 Jahren
SQL Befehle mit C# an DB Weiterleiten

verwendetes Datenbanksystem: SQLExpress
C# Express

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;
using System.IO;
using System.Threading;

namespace db
{
    public partial class Form1 : Form
    {//Vom Thread zur Form1
        string transporter = "0";
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
           Thread qwer= new Thread(ashole);
           qwer.Start();
          }
        private void ashole() { 
        
            try
            {//einer meiner DB versuche, weiter kam ich nicht
                StreamReader sr = new StreamReader("C:\\Users\\Marco\\Desktop\\first2.sql");
                string dbbefehle = "";
                string line = "";
//Otto und otto2 dienen der beschleunigung
//w und w2 sind die zähler die 
                string otto = "";
                int w = 0;
                string otto2 = "";
                int w2 = 0;
                int linecount = 0;
                while ((line = sr.ReadLine()) != null)
                {
                    otto += line;
                    w++;
                    //beschleunigen durch kleinere Strings, 2 mal die dritte wurzel aufgeteilt, seehr schnell:o
                    if (w > 36)
                    {
                        otto2 += otto; otto = ""; w = 0;
                        w2++;
                        if (w2 > 37) { dbbefehle += otto2; otto2 = ""; w2 = 0; }
                    }
                    linecount++;
                   transporter =linecount.ToString();
                }
                SqlConnection con = new SqlConnection();

                     //Hier schreit meine DB, da sollte ich irgendwie meiner DB den Inhalt der Variable a übergeben, diese enthält einen Constructor für eine Tabelle mit 5000 einträgen, diese muss der Leeren DB eingefügt werden
//a enthält die gesamten infor für die zu erzeugende tabelle
                
                transporter = "100000";
            }
            catch (Exception n) { transporter = "EX"+n; }
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            try
            {
//prozentausgabe des vortschrittes, ohne aufteilen in otto's dauerte es ewig, ausserdem ausgabe nahc Form1 bei Multithreading
                label1.Text = ((int.Parse(transporter) * 100 / 50011)).ToString() + "% geladen";
            }
            catch (Exception) {label1.Text=transporter; }
        }
    }

}

ich stehe an, ich kann keine Tabelle über SQL code erzeugen, sämtliche suche mit google hat nichts gebracht, deshalb versuch ichs jetzt hier, am besten so posten das der code sofort einsatzfähig ist, ich bin bis jetzt mit keinem Beispiel aus dem Web Klargekommen, deshalb bitte ich um Funktionierende Codezeilen, bevorzugt mit erklärung wieso es genau so gemacht werden sollte.
Über einen SQL editor gehe ich nicht weil ich wissen sollte wie man sowas im programm selber erzeugt, später auch für OOPDB's.

Danke im voraus

Die Daten krigen auf meinem PC ne Bank, ich nicht, möcht aber auch Hocken:o

F
155 Beiträge seit 2009
vor 13 Jahren

Hallo,

deshalb bitte ich um Funktionierende Codezeilen, bevorzugt mit erklärung wieso es genau so gemacht werden sollte.

lies dir erst mal [Hinweis] Wie poste ich richtig? durch.

fz

PS: es hilft beim programmieren wenn man sprechende Variablennamen gibt

"We better hurry up and start coding, there are going to be a lot of bugs to fix."

1.552 Beiträge seit 2010
vor 13 Jahren

Hallo Multithread,

willkommen im Forum,

wie F.Z. bereits sagte es ist schlimm wie du deine Variablen benennst. Ok es is etwas mehr schreibarbeit, den Sinn der Variablen merkt man sich auch wenn der Code innerhalb einer Stunde funktioniert. Aber denk dir du kommst in einem Jahr wieder an diese Stelle um etwas zu ändern. Hast dann mehr Programmiererfahrung und siehtst dir den Code an und denkst dir WTF. Was macht der Code.
Back on topic.
Sieh dir folgendes Das .NET Datenbanken How To an.

Gruß
Michael

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp

C
2.122 Beiträge seit 2010
vor 13 Jahren

Vielleicht würds ja schon helfen wenn man verstehen könnte was du überhaupt vor hast. Was soll der ganze Abschnitt mit den seltsamen Strings überhaupt bewirken?
Und wo schreit die DB etwas mit der Variablen a? Die kenn die doch gar nicht.

Übrigens, wenns dann wirklich schon so besch... Namen sein sollen, asshole schriebt man mit 2 s 😉

1.552 Beiträge seit 2010
vor 13 Jahren

Was soll der ganze Abschnitt mit den seltsamen Strings überhaupt bewirken? Soll irgendwie magisch den SQL-Skript aus der Datei auslesen
//beschleunigen durch kleinere Strings, 2 mal die dritte wurzel aufgeteilt, seehr schnell:o

Was soll da beschleunigt werden. Wenn du die Eigenart der String Klasse verstanden hättest wusstes du dass String nicht änderbar sind. Also einmal initialisert nie mehr änderbar.
[FAQ] Besonderheiten der String-Klasse (immutabler Referenztyp mit Wertsemantik)

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp

M
Multithread Themenstarter:in
6 Beiträge seit 2011
vor 13 Jahren

Was soll der ganze Abschnitt mit den seltsamen Strings überhaupt bewirken?
Soll irgendwie magisch den SQL-Skript aus der Datei auslesen
//beschleunigen durch kleinere Strings, 2 mal die dritte wurzel aufgeteilt, seehr schnell:o
Was soll da beschleunigt werden. Wenn du die Eigenart der String Klasse verstanden hättest wusstes du dass String nicht änderbar sind. Also einmal initialisert nie mehr änderbar.

>

es geht nicht um die Strings Primär, wenn du 100000Zeilen hast und alle bei dem einen String anhängst, sagt mir die eigenheit des Strings das jedesmal der Komplette String durchlaufen wird, wenn ich jetzt mit vielen kurzen Strings arbeite geht es schneller da nicht 5MB zuerst durch den Prozi müssen, geschwindigkeitsgewinn von fast Fator 100, probier es ruhig aus.
Mir sind die eigenheitnen von Strings durchaus bekannt, sonst hätte ich auch nicht aufgeteilt, sondern mich gewundert wieso es ca 2 Minuten braucht um die 50'000 zeilen einzulesen, so dauert es keine 2 sekunden.

//ich habe kein Passwort
//was muss ich jetzt alles auslassen? Ich stehe komplett aufm schlauch.
string connstr = "data source=localhost\SQLEXPRESS;user id=sa;password=geheim;integrated security=false;"
    + "persist security info=false;initial catalog=shit";
    SqlConnection conn = new SqlConnection(connstr);
    SqlCommand cmd = new SqlCommand(dbcodezeilen, conn);
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    int anzahl = 0;

    try
    {
        conn.Open();
        anzahl = cmd.ExecuteNonQuery();
    }
    catch (Exception ex)
    {
        MessageBox.Show("Es ist ein Fehler aufgetreten : " + ex.Message);
    }
    conn.Close();
    MessageBox.Show(anzahl + " Zeile(n) geändert "); 

Danke für die Links, der Eine hat mir etwas geholfen, blos der Knoten ist noch da
Ich hab vor dem Posten auch das mit dem Punkt 6 und 7 die Gerne vergessen durchgelesen und mir schon gedacht dass meine frage bischen scheisse ist.

Es Geht jetzt wo weit das bei mir einfach der Benutzer nicht stimmt, ich habe nie einen Benutzer eingerichted, aber ich bin weiter als je zuvor.
Ich hab mal versucht die Variablen "Verständlicher" zu deklarieren, das ich Programme 2 mal brauche ist leider der ausnahmefall,

Die Daten krigen auf meinem PC ne Bank, ich nicht, möcht aber auch Hocken:o

1.552 Beiträge seit 2010
vor 13 Jahren

Dir fehlt noch die Angabe der konkreten Datenbank.
Server=myServerName\theInstanceName;Database=myDataBase;Trusted_Connection=True;
Siehe u.a auch unter ConnectionStrings.com

Ich geb dir teilweise recht, es geht schneller wenn du immer 36 Zeilen zu einem String bündelst und dann diesen mit dem "großen" verknüpfst. Aber man kann noch mehr Performance herauskitzerln. Schon mal StringBuilder probiert?

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp

M
Multithread Themenstarter:in
6 Beiträge seit 2011
vor 13 Jahren

Danke für den Hinweis, ich versuche mich Jetzt gerade an dem Anmeldung Fehlgeschlagen für den Benutzer 'Multithread' Fehler, ich hab keine ahnung wieso, mit Benutzername Benutzerpasswort hab ichs schon Probiert, hat nicht geklappt.

Die Daten krigen auf meinem PC ne Bank, ich nicht, möcht aber auch Hocken:o

C
2.122 Beiträge seit 2010
vor 13 Jahren

Also zum Textdateien lesen würd ich File.ReadAllText verwenden. Das macht aus den etwa 15 Zeilen eine einzige und ist sicher auch performancemäßig ziemlich unschlagbar.

Du schreibst weiter oben dass du noch nie einen Benutzer angelegt hast. Das würd ich ja schon tun, denn den gibts nicht von selber in der DB. Du gibst den sa an, der hat aber sicher ein Passwort, das fehlt noch im Connectionstring.

1.552 Beiträge seit 2010
vor 13 Jahren

Anmeldung Fehlgeschlagen für den Benutzer 'Multithread' Fehler

Das sagt eindeutig dass entweder der Benutzer Multithread nicht existiert oder das Password fehlerhaft ist. Müsste auch in der genaueren Fehlerbeschreibung stehen.
Erstelle über das MSSQL Management Studio die notwendigen Benutzer. Im allgemeinen sollte nicht das sa Passwort verwendet werden da dieses Standardmäßig Admin Rechte hat.

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp