2017-12-01 4 views
0

を作成してきた私は、Webプロジェクトを作成しましたが、私は私のローカルデータベースに値を挿入しようとすると、私は次のエラーを取得する:エラー:「無効な列名」が、列はすでに

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''.

これは、私のSQL-テーブル:

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]) 

);

これは私のASP.Net C#のコードです:

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; 
    } 
} 

私はこのエラーを解決することができますか?

+1

マイSQLまたはSQL Serverを行ったようにパラメータを使用していないプレーンなクエリ作成され、あなたがそれを行うことができる方法の例であります?タイトルでは、あなたのSQLデータベースまたはあなたの "MySQL" DBを意味します – Sankar

+0

ローカルSQLクエリ –

+0

いいえ、私はどのSQL製品を使用しているのですか?とにかく私はその答えをSQL Server知っています。使用していない製品にはタグを付けないでください。 – Sankar

答えて

1

SQLインジェクションにこのリードあなたのようなパラメータを渡す

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); 
あなたが事適切な方法を行っていない

  1. 避けるために、パラメータを以下のようにコードを変更しますそれはSQLパラメータを使用します
  2. usingのconを使用するnection、それは
以下

を処分し、自動的に取得しますので、ここでは全体のポイントは、あなたが今

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

この1つを覚えておいていただきありがとうございます –

+0

私のウェブプロジェクトそのおかげです。 –

+0

@OrekiRedgrave - 今後のエラーを避けるために提案した方法を試してください。 –