2017-12-01 9 views
0

Ich habe ein Web-Projekt erstellt, aber wenn ich versuche, Werte in meiner lokale Datenbank einzufügen bekomme ich folgende Fehlermeldung:Fehler: „Ungültige Spaltenname“, aber Spalten sind bereits angelegt

Error : Invalid column name ''22 478 295 290''. Invalid column name ''Oreki''. Invalid column name ''Redgrave''. Invalid column name ''Female''. Invalid column name ''[email protected]''. Invalid column name ''1234''. Invalid column name ''12, 1 2017''. Invalid column name ''18:41:44:529''.

Dies ist meine SQL-Tabelle:

CREATE TABLE [dbo].[Account] (
[ID]   VARCHAR(50)   NOT NULL, 
[Firstname] VARCHAR (MAX) NOT NULL, 
[Lastname]  VARCHAR(50) NOT NULL, 
[Gender]  VARCHAR (10) NOT NULL, 
[Email]  VARCHAR(50)   NOT NULL, 
[Password]  VARCHAR(50)   NOT NULL, 
[DateRegister] VARCHAR (50) NOT NULL, 
[TimeRegister] VARCHAR (25) NOT NULL, 
CONSTRAINT [PK_Account] PRIMARY KEY ([ID]) 

);

Das ist mein ASP.Net C# -Code:

try 
    { 
     SqlConnection Connect = new SqlConnection("Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=C:\\Users\\Oreki Illustration\\Documents\\NowTips.mdf;Integrated Security=True;Connect Timeout=30"); 
     SqlCommand Say = new SqlCommand(); 
     DateTime Date = DateTime.Now; 

     string GetStringDate = Date.Month.ToString() + ", " + Date.Day.ToString() + " " + Date.Year.ToString(); 
     string GetStringTime = Date.Hour.ToString() + ":" + Date.Minute.ToString() + ":" + Date.Second.ToString() + ":" + Date.Millisecond.ToString(); 

     Connect.Open(); 
     Say.Connection = Connect; 
     Say.CommandText = "Insert into Account values (['" + GetID + "'], ['" + Firstname.Text + "'], ['" + Lastname.Text + "'], ['" + Gender.SelectedValue.ToString() + "'], ['" + Email.Text + "'], ['" + RePassword.Text + "'], ['" + GetStringDate + "'], ['" + GetStringTime + "'])"; 
     Say.ExecuteNonQuery(); 
     Connect.Close(); 

    } 
    catch (Exception Message) 
    { 
     form1.InnerHtml = "Error : " + Message.Message; 
    } 


public string GetID 
{ 
    get 
    { 
     string A = "", B = "", C = "", D = ""; 

     Random RandomID = new Random(); 

     for (int x = 0; x < 10; x++) A = RandomID.Next(1000).ToString(); 
     for (int x = 0; x < 10; x++) B = RandomID.Next(1000).ToString(); 
     for (int x = 0; x < 10; x++) C = RandomID.Next(1000).ToString(); 
     for (int x = 0; x < 10; x++) D = RandomID.Next(1000).ToString(); 

     return A + " " + B + " " + C + " " + D; 
    } 
} 

Wie kann ich diesen Fehler beheben?

+1

My SQL oder SQL Server ? In Titel meinen Sie Ihre SQL db oder Ihre "MySQL" DB – Sankar

+0

Lokale SQL-Abfrage –

+0

Nein, ich frage, welches SQL-Produkt Sie verwenden? Wie auch immer, ich kenne die Antwort auf SQL Server. Kennzeichnen Sie nicht die Produkte, die Sie nicht verwenden. – Sankar

Antwort

1

Ändern Sie den Code wie unten mit Parametern,

cmd.CommandText = "Insert into Account values 
       ([@GetID, @Firstname, @Lastname, @Gender, @Email, @RePassword, @GetStringDate, @GetStringTime)"; 
cmd.Parameters.AddWithValue("@GetID", GetID); 
cmd.Parameters.AddWithValue("@Firstname", Firstname.Text); 
cmd.Parameters.AddWithValue("@Lastname", Lastname.Text); 
cmd.Parameters.AddWithValue("@Gender", Gender.SelectedValue.ToString()); 
cmd.Parameters.AddWithValue("@Email", Email.Text); 
cmd.Parameters.AddWithValue("@RePassword", RePassword.Text); 
cmd.Parameters.AddWithValue("@GetStringDate", GetStringDate); 
cmd.Parameters.AddWithValue("@GetStringTime", GetStringTime); 

Sie tun, was die richtige Art und Weise nicht,

  1. Parameter wie diese führen vorbei Sie SQL-Injection
  2. zu vermeiden es verwenden Sql Parameter
  3. Verwenden Sie using für con bindung, so wird es automatisch

Unten Beispiel erhalten entsorgen ist, wie Sie es tun können, hier insgesamt Punkt ist die Verwendung von Parameter machen nicht schlicht Abfrage wie Sie gerade jetzt tat

string commandText = "UPDATE Sales.Store SET Demographics = @demographics " 
     + "WHERE CustomerID = @ID;"; 

    using (SqlConnection connection = new SqlConnection(connectionString)) 
    { 
     SqlCommand command = new SqlCommand(commandText, connection); 
     command.Parameters.Add("@ID", SqlDbType.Int); 
     command.Parameters["@ID"].Value = customerID; 

     // Use AddWithValue to assign Demographics. 
     // SQL Server will implicitly convert strings into XML. 
     command.Parameters.AddWithValue("@demographics", demoXml); 

     try 
     { 
      connection.Open(); 
      Int32 rowsAffected = command.ExecuteNonQuery(); 
      Console.WriteLine("RowsAffected: {0}", rowsAffected); 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine(ex.Message); 
     } 
    } 
+0

danke sir krank werde ich daran erinnern, dieses –

+0

mein Web-Projekt funktioniert dank –

+0

@OrekiRedgrave - versuchen Sie die Art und Weise, die ich vorgeschlagen, speichert Sie von Fehlern in Zukunft –

Verwandte Themen