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
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."
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
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 😉
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)
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
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?
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
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.
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.