Permalänk

C#, databaser

Jag har försökt att lägga till post i min databasen få felmeddelande hela tiden om att det är fel i SQL syntax. Det den reagerar på varje gång är GUID. Är det någon som skulle kunna hjälpa mig med detta minst sagt irriterade problemet.

public void WritteNewProgram(Guid ID, string ProgramName, string SystemReqrequirements, string Version, int Size, Image InformationImage, string Description, Guid UserID) { // SQL command SqlCommand SQLQuestion = new SqlCommand("INSERT INTO Upload_program (ID, Name, SystemRequirements, Version, Size, Description, UserId) VALUES(" + ID + ", '" + ProgramName + "', '" + SystemReqrequirements + "'," + Version + ", " + Size + ", '" + Description + "', " + UserID); SQLQuestion.Connection = DatabaseConnection; DataA = new SqlDataAdapter(); DataA.InsertCommand = SQLQuestion; // Execute the SQL command DataA.InsertCommand.ExecuteNonQuery(); }

Guid test1 = new Guid("c31f8cba-711b-4d55-9046-e50eae809571"); Guid test2 = new Guid(); test2 = Guid.NewGuid(); DatabasConnection.WritteNewProgram(test2, txtName.Text, txtReq.Text, txtVersion.Text, Convert.ToInt32(txtSize.Text), test, txtDescription.Text, test1);

Permalänk

Nu har jag ingen större erfarenhet av c# men om man får gissa...

- kanske måste du infoga citat-tecken om guid ska skickas som en sträng, dvs skriva ngt i stil med ...VALUES('" + ID + "', ...
- kanske måste du också explicit konvertera värdet av ID till en sträng, dvs skriva ngt i stl med ...VALUES('" + ID.toString() + "', ...

Permalänk
Medlem
Skrivet av frozendragon498:

Jag har försökt att lägga till post i min databasen få felmeddelande hela tiden om att det är fel i SQL syntax. Det den reagerar på varje gång är GUID. Är det någon som skulle kunna hjälpa mig med detta minst sagt irriterade problemet.

public void WritteNewProgram(Guid ID, string ProgramName, string SystemReqrequirements, string Version, int Size, Image InformationImage, string Description, Guid UserID) { // SQL command SqlCommand SQLQuestion = new SqlCommand("INSERT INTO Upload_program (ID, Name, SystemRequirements, Version, Size, Description, UserId) VALUES(" + ID + ", '" + ProgramName + "', '" + SystemReqrequirements + "'," + Version + ", " + Size + ", '" + Description + "', " + UserID); SQLQuestion.Connection = DatabaseConnection; DataA = new SqlDataAdapter(); DataA.InsertCommand = SQLQuestion; // Execute the SQL command DataA.InsertCommand.ExecuteNonQuery(); }

Guid test1 = new Guid("c31f8cba-711b-4d55-9046-e50eae809571"); Guid test2 = new Guid(); test2 = Guid.NewGuid(); DatabasConnection.WritteNewProgram(test2, txtName.Text, txtReq.Text, txtVersion.Text, Convert.ToInt32(txtSize.Text), test, txtDescription.Text, test1);

En Guid består inte bara av siffror i "textform". Du behöver '-futtarna för Guid:arna också. (Guid.ToString Method (System)). Detsamma gäller för "Version" som du försöker stoppa in utan '-tecken.
Om det inte hjälper - Debugga och kolla hur queryn ser ut precis innan du kör ExecuteNonQuery();

Kör sedan queryn manuellt i Management Studio och felsök.

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk

Konkatenera aldrig ihop sql kommandon. Detta gör att du är mottaglig för SQL injections.
Använd istället SqlParameter för att skicka värden typ såhär.

int id = 1;
SqlCommand cmd = new SqlCommand("insert into tbl(id) values(@id)");
cmd.Parameters.AddWithValue("@ID", id);

Permalänk
Medlem

Om du är intresserad så kan du kolla upp
SubSonic: All Your Database Are Belong To Us

Visa signatur

Utvecklare (Technical Director) / Delägare - Björnmamman

Permalänk
Medlem

eller så använder man entity framework som finns med i senaste .net. Funkar mycket bra, dock har jag endast använt det på mina små hemmaprojekt så jag kan inte säga hur det är i en produktionsmiljö.

Visa signatur

"Say unto thine own heart, I am mine own redeemer"
Don't touch me when I'm crazy of that airplane glue