2014-04-25 7 views
7

Di seguito è riportato il codice con cui sto lavorando per provare ad inserire i dati nella mia tabella 'ArticoliTBL'. Voglio anche caricare un file immagine sul computer mt. Precedentemente stavo lavorando in Visual Studio solo con i controlli dati all'interno del mio file .aspx per inserire i dati, quindi provare a farlo in C# è nuovo per me. Qualsiasi aiuto sarebbe molto apprezzato. Grazie.Come posso inserire dati in una tabella SQL utilizzando C# e implementare una funzione di caricamento?

Mi viene visualizzato un errore: sintassi non corretta vicino a "UploadedUserFiles".

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.IO; 
using System.Data; 
using System.Data.SqlClient; 
using System.Web.Configuration; 

public partial class _CopyOfSubmitArticle : System.Web.UI.Page 
{ 
protected void Page_Load(object sender, EventArgs e) 
{ 

} 

protected void uploadbutton_Click(object sender, EventArgs e) 
{ 
    string UpPath = Server.MapPath("~/UploadedUserFiles"); 

     int imgSize = FileUpload1.PostedFile.ContentLength; 
     string imgName = FileUpload1.FileName; 
     string imgPath = "UploadedUserFiles/" + imgName; 

     if (FileUpload1.PostedFile.ContentLength > 1000000) 
     { 
      Page.ClientScript.RegisterClientScriptBlock(typeof(Page), "Alert", "alert('File is too big')", true); 
     } 

     else 
     { 
      FileUpload1.SaveAs(Server.MapPath(imgPath)); 
      myinfo.Text = "file" + imgPath + "uploaded."; 
     } 



    String connectionString = WebConfigurationManager.ConnectionStrings["ConnectAntiFrack"].ConnectionString; 

    SqlConnection myConnection = new SqlConnection(connectionString); 

    myConnection.Open(); 

    string ArticleImg = "UploadedUserFiles/" + FileUpload1.FileName; 
    string ArticleTitle = ArticleTitleTextBox.Text; 
    string ArticleContent = ArticleContentTextBox.Text; 
    string ArticleType = ArticleTypeDropdown.Text.ToString(); 
    string ArticleAuthor = ArticleAuthorTextBox.Text.ToString(); 
    string ArticleBrief = ArticleBriefTextBox.Text; 
    string ArticleDateTime = DateTime.Now.ToShortTimeString(); 

    string query = "INSERT INTO ArticlesTBL (ArticleTitle, ArticleContent, ArticleType, ArticleImg, ArticleBrief, ArticleDateTime, ArticleAuthor, ArticlePublished, ArticleHomeDisplay, ArticleViews) VALUES (" + ArticleTitle +", " + ArticleContent +", "+ ArticleType +" " + ArticleImg +", "+ ArticleBrief +"," + ArticleDateTime + ", "+ ArticleAuthor +",'False', 'False', '0')"; 

    SqlCommand myCommand = new SqlCommand(query, myConnection); 

    myCommand.ExecuteNonQuery(); 

    //  myinfo.Text = "connection to db is made"; 
    myConnection.Close(); 

} 
+3

Qual è la tua domanda? Cosa non funziona? A proposito, dovresti usare [query parametrizzate] (http://stackoverflow.com/questions/5468425/how-do-parameterized-queries-help-against-sql-injection) per evitare attacchi SQL Injection. – mason

+0

L'errore è perché hai dimenticato una virgola tra ArticleType e ArticleImg, esegui il debug e guarda la stringa 'query' prima dell'esecuzione. Dovresti davvero usare una query parametrizzata. –

+0

@JasonGoemaat buona cattura – Jonesopolis

risposta

23

Si consiglia di utilizzare i parametri nella query per prevenire gli attacchi, come se qualcuno è entrato '); drop table ArticlesTBL;--' come uno dei valori.

string query = "INSERT INTO ArticlesTBL (ArticleTitle, ArticleContent, ArticleType, ArticleImg, ArticleBrief, ArticleDateTime, ArticleAuthor, ArticlePublished, ArticleHomeDisplay, ArticleViews)"; 
query += " VALUES (@ArticleTitle, @ArticleContent, @ArticleType, @ArticleImg, @ArticleBrief, @ArticleDateTime, @ArticleAuthor, @ArticlePublished, @ArticleHomeDisplay, @ArticleViews)"; 

SqlCommand myCommand = new SqlCommand(query, myConnection); 
myCommand.Parameters.AddWithValue("@ArticleTitle", ArticleTitleTextBox.Text); 
myCommand.Parameters.AddWithValue("@ArticleContent", ArticleContentTextBox.Text); 
// ... other parameters 
myCommand.ExecuteNonQuery(); 

Exploits of a Mom

(xkcd)

+0

Grazie, ci proverò ora. – Claire

+0

Hahahahahaha +1 – Yster

2
using System; 
using System.Data; 
using System.Data.SqlClient; 

namespace InsertingData 
{ 
    class sqlinsertdata 
    { 
     static void Main(string[] args) 
     { 
      try 
      { 
      SqlConnection conn = new SqlConnection("Data source=USER-PC; Database=Emp123;User Id=sa;Password=sa123"); 
      conn.Open(); 
       SqlCommand cmd = new SqlCommand("insert into <Table Name>values(1,'nagendra',10000);",conn); 
       cmd.ExecuteNonQuery(); 
       Console.WriteLine("Inserting Data Successfully"); 
       conn.Close(); 
     } 
      catch(Exception e) 
      { 
       Console.WriteLine("Exception Occre while creating table:" + e.Message + "\t" + e.GetType()); 
      } 
      Console.ReadKey(); 

    } 
    } 
}