2016-07-17 2 views
2

C# asp.net - 데이터베이스에 데이터 삽입 (어디서 잘못 되었습니까?) -이 코드는 실행 중이지만 전혀 작동하지 않습니다! 내가 만든 웹 사이트를 통해 데이터를 먹이려고했지만 내 데이터베이스에 모든 plz 도움을 반영 실 거예요 !!!! 당신이 당신의 INSERT 문에 이중 쉼표를 가지고있는 것처럼C# asp.net - 데이터베이스에 데이터 삽입 (어디서 잘못 되었습니까?)

using System; 
using System.Configuration; 
using System.Data; 
using System.Linq; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.HtmlControls; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Xml.Linq; 
using System.Data.SqlClient; 
public partial class _Default : System.Web.UI.Page 

{ 
    SqlConnection con = new SqlConnection("Data Source=GARGI-PC\\ROOT;Initial Catalog=master;Integrated Security=True"); 
    protected void page_load(object sender, EventArgs e) 
    {} 

    public void refress() 
    { 

     comment1.Text = ""; 

     software1.Checked = true; 

     hardware1.Checked = false; 

     both1.Checked = false; 

     others.Checked = false; 
    } 
    protected void btn(object sender, EventArgs e) 
    { 
     string type = string.Empty ; 

     if (hardware1.Checked == true) 
     { 
      type = "hardware"; 
     } 
     if (software1.Checked == true) 
     { 
      type = "software"; 
     } 
     if (both1.Checked == true) 
     { 
      type = "both"; 
     } 
     if (others.Checked == true) 
     { 
      type = "others"; 
     } 



     SqlCommand cmd = new SqlCommand("insert into main_page (type, discription,time) values('" + type + "','" + comment1.Text + "','" + "','"+"now()')", con); 

     cmd.CommandType = CommandType.Text; 

     try 

     { 

      con.Open(); 

      cmd.ExecuteNonQuery(); 

      con.Close(); 

      refress(); 

     } 

     catch (Exception ex) 

     { 

     } 

    } 

    public void btn_clear(object sender, EventArgs e) 

    { 
     refress(); 

    } 

} 

답변

3

보인다. 같은

+ "','" + "','" 

INSERT 문이 보일 것입니다 :

INSERT INTO main_page (type, description, time) VALUES ('Type', 'Description', NOW()) 

은 또한 당신이 SQL 주입에 취약하다, 당신이해야 paramerterize your queries하여 입력하는 대신 사용자의 데이터를 신뢰의 모든합니다. 기본적인 예를 들어 : 사용자가 Comment1 텍스트 상자 내에서 SQL 문을 입력 한 경우

MySqlCommand command = new MySqlCommand("INSERT INTO main_page (Description) VALUES @Description"); 
command.Parameters.AddWithValue("@Description", comment1.Text); 

이 당신을 보호 할 것입니다.

ArbitaryData; DROP TABLE main_page; 
1

정말 명령 매개 변수를 사용해야합니다. 여기에서 예로 시도해보십시오.

public static void AddSong(Songs s) 
    { 
     using (SqlConnection sqlcon = new SqlConnection(SQL_getConnectionString.conStr())) 
     { 
      sqlcon.Open(); 
      try 
      { 
       string query = "INSERT INTO Songs VALUES(@Id, @Name, @Artist, @Album, @TrackNumber, @TrackNumberCount, " + 
        "@Genre, @Rating, @Tags, @Subject, @Categories, @Comments, @FileName, @FolderName, @FolderPath, " + 
        "@FullPath, @Length, @PlayCount, @SkipCount, @LastPlayed)"; 

       using (SqlCommand cmd = new SqlCommand(query, sqlcon)) 
       { 
        cmd.Parameters.Add("@Id", SqlDbType.Int).Value = s.Id; 
        cmd.Parameters.Add("@Name", SqlDbType.VarChar, 250).Value = s.Name; 
        cmd.Parameters.Add("@Album", SqlDbType.VarChar, 250).Value = s.Album; 
        cmd.Parameters.Add("@Artist", SqlDbType.VarChar, 250).Value = s.Artist; 
        cmd.Parameters.Add("@TrackNumber", SqlDbType.Int).Value = s.TrackNumber; 
        cmd.Parameters.Add("@TrackNumberCount", SqlDbType.Int).Value = s.TrackNumberCount; 
        cmd.Parameters.Add("@Genre", SqlDbType.VarChar, 500).Value = s.Genre; 
        cmd.Parameters.Add("@Rating", SqlDbType.Int).Value = s.Rating; 
        cmd.Parameters.Add("@Tags", SqlDbType.VarChar, 500).Value = s.Tags; 
        cmd.Parameters.Add("@Subject", SqlDbType.VarChar, 500).Value = s.Subject; 
        cmd.Parameters.Add("@Categories", SqlDbType.VarChar, 500).Value = s.Categories; 
        cmd.Parameters.Add("@Comments", SqlDbType.VarChar, -1).Value = s.Comments; 
        cmd.Parameters.Add("@FileName", SqlDbType.VarChar, 500).Value = s.FileName; 
        cmd.Parameters.Add("@FolderName", SqlDbType.VarChar, 500).Value = s.FolderName; 
        cmd.Parameters.Add("@FolderPath", SqlDbType.VarChar, -1).Value = s.FolderPath; 
        cmd.Parameters.Add("@FullPath", SqlDbType.VarChar, -1).Value = s.FullPath; 
        cmd.Parameters.Add("@Length", SqlDbType.VarChar, 50).Value = s.Length; 
        cmd.Parameters.Add("@PlayCount", SqlDbType.Int).Value = s.PlayCount; 
        cmd.Parameters.Add("@SkipCount", SqlDbType.Int).Value = s.SkipCount; 
        cmd.Parameters.Add("@LastPlayed", SqlDbType.VarChar, 50).Value = s.LastPlayed; 

        int rows = cmd.ExecuteNonQuery(); 
        sqlcon.Close(); 

       } 

      } 
      catch (Exception ex) 
      { 
       Console.WriteLine("Could not insert. {0}", s.Name); 
       Console.WriteLine("Error Message {0}", ex.Message); 
      } 


     } 
    } 
관련 문제