SQL Insert String

daschii

Mitglied
Hallo zusammen

Kann mir jemand helfen? Bin ratlos......warum funktioniert mein Insert-Command nicht?

Code:
//SQL-DB Code. Connection zu Cxsopt01 und Vergleich der Active Directory DB mit der Ambercat-DB
					System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection ();
					conn.ConnectionString = "Persist Security Info=False;User ID=ad_hd_abgleich; Password=adhdabgleich1;Initial Catalog=AmCatHDSQL_Test;Data Source=cxsopt01;Packet Size=4096;Workstation ID=LOGINPLATTFORM;";
					try
					{
						conn.Open();
						try
						{	
							System.Data.SqlClient.SqlDataReader myReader = null;
							//SQL-Command
							System.Data.SqlClient.SqlCommand    myCommand = new System.Data.SqlClient.SqlCommand("SELECT PersonId FROM dbo.People WHERE'" + alias + "'=PersonId", conn);
							myReader = myCommand.ExecuteReader();
							//Vergleich
							if (myReader.HasRows)
							{
								MessageBox.Show(alias + " ist vorhanden");
							}
							else
							{
								MessageBox.Show(alias + " ist noch nicht vorhanden");

								//Provisorisch: In richTextBox schreiben.
								//richTextBox1.Text = richTextBox1.Text + Environment.NewLine + resEnt.GetDirectoryEntry().Path.Substring(10,(sepp-10)) + ";" + alias ;
								//In Label1 & richTextBox1 schreiben.
								richTextBox1.Text = richTextBox1.Text + Environment.NewLine + alias ;
								zaehler = zaehler + 1;
								label1.Text = zaehler.ToString();
								
								
								//INSERT CODE (SQL-Insert Befehl)
								string insert_alias = alias;
								System.Data.SqlClient.SqlCommand myCommand2 = new System.Data.SqlClient.SqlCommand("INSERT into dbo.People (PersonId) VALUES (insert_alias)", conn);
								myCommand2.ExecuteNonQuery();
							}
						}

Konkret:
Code:
string insert_alias = alias;
System.Data.SqlClient.SqlCommand myCommand2 = new System.Data.SqlClient.SqlCommand("INSERT into dbo.People (PersonId) VALUES (insert_alias)", conn);
myCommand2.ExecuteNonQuery();

Vielen Dank für die Hilfe!
Gruss,
daschii
 

ryders13

Grünschnabel
Hallo!

Was für eine Fehlermeldung bekommst du denn? Also was auf jeden Fall falsch ist, ist dass du
...VALUES (insert_alias)
in deiner Anweisung stehen hast und du somit immer insert_alias als Wert in die DB schreiben würdest. Zudem musst du normalerweise (ich habe aber schon länger nicht mehr mit MySQL gearbeitet) die Werte in ' ' setzen.
Entweder du machst das indem du dir einen String baust (in der Klammer aber ohne Leerzeichen!):
Code:
" INSERT ...  VALUES ( ' "+insert_alias+" ' )";
oder du nutzt den Commandbuilder
müsste irgendwas mit mySqlCommand und addParameter sein.

Grüße
 

daschii

Mitglied
Fehlermeldung kommt keine, da ich ein TRY/CATCH habe.

Nehm ich das Try/Catch aber weg kommt folgendes:

Code:
Eine nicht behandelte Ausnahme des Typs 'System.Data.SqlClient.SqlException' ist in system.data.dll aufgetreten.
Zusätzliche Informationen: System error.
Ziemlich nichtssagen, oder? :(

Und Danke für die Info bezg. ' !
 

Norbert Eder

Erfahrenes Mitglied
Doch, sagt viel aus, nämlich dass dein SQL-Statement nicht passt. Schreib es dir auf die Console raus, ab in den Enterprise-Manager und ausführen, dann siehst sofort wo der Fehler liegt.

Und nein, ich hab mir deinen Code jetzt nicht angesehen, weil du das ganze in 2 Minuten erledigen kannst .
 

daschii

Mitglied
Norbert Eder hat gesagt.:
Doch, sagt viel aus, nämlich dass dein SQL-Statement nicht passt. Schreib es dir auf die Console raus, ab in den Enterprise-Manager und ausführen, dann siehst sofort wo der Fehler liegt.

Und nein, ich hab mir deinen Code jetzt nicht angesehen, weil du das ganze in 2 Minuten erledigen kannst .

Öhm, das hört sich leichter an, als es ist…..
Was soll ich auf die Konsole schreiben? Meinen Code? Den Ganzen? Oder nur die Fehlermeldung?

Und was soll ich damit im Enterprise Manager?Wo führ ich es aus?

Entschuldige die Fragen aber es ist das erste Mal, dass ich mit SQL Server arbeite…..
 

Norbert Eder

Erfahrenes Mitglied
Den Insert-SQL String natürlich.

Hast eigentlich das vom ryders13 schon probiert? Dürfte dein Problem wohl lösen ...
 

daschii

Mitglied
Norbert Eder hat gesagt.:
Den Insert-SQL String natürlich.

Hast eigentlich das vom ryders13 schon probiert? Dürfte dein Problem wohl lösen ...

Jep, hab ich -
*****************************
System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection ();
conn.ConnectionString = "Persist Security Info=False;User ID=ad_hd_abgleich; Password=pw;Initial Catalog=AmCatHDSQL_Test;Data Source=cxsopt01;Packet Size=4096;Workstation ID=LOGINPLATTFORM;";


conn.Open();
System.Data.SqlClient.SqlCommand myCommand2 = new System.Data.SqlClient.SqlCommand("INSERT into dbo.People (PersonId) VALUES ('Hans')",conn);
myCommand2.ExecuteNonQuery();


conn.Close();
*****************************

Funktioniert aber immer noch nicht......Was mach ich bloss Falsch?
 
Zuletzt bearbeitet:

Norbert Eder

Erfahrenes Mitglied
User hat Schreibrechte?
PersonID ist vom Typ varchar, nvarchar etc. oder eventuell doch ne Zahl?

Hast das SQL-Statement
INSERT into dbo.People (PersonId) VALUES ('Hans')
schon mal im Enterprise Manager getestet? Also quasi direkt auf der DB?
 

Nico Graichen

Erfahrenes Mitglied
Muss mich auch mal einmischen :D

Gib doch im catch-Block mal deine Exception aus
Also:
Code:
...
catch(Exception ex)
{
MessageBox.Show(ex.Message + "\n" + ex.Message.InnerException);
}
oder
Code:
...
catch(Exception ex)
{
Console.WriteLine(ex.Message + "\n" + ex.Message.InnerException);
}

Der Teil mit der InnerException kann evtl. zu einem Fehler führen, wenn es keine gibt. Dann musst du die Ausgabe dafür halt weg lassen