2016-03-25 19 views
-2

Ich versuche, Daten (Benutzereingabe) in eine SQL Server-Datenbank einzufügen. Alles sieht gut aus, aber es fügt keine Daten in die Datenbank ein. Code hinter Datei (default.aspx.cs) sieht wie folgt aus:Einfügen von Daten in eine SQL Server-Datenbank von asp.net

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

public partial class _Default : System.Web.UI.Page 
{ 
    SqlConnection connection = new SqlConnection(WebConfigurationManager.ConnectionStrings["mumsDiaryConnectionString"].ConnectionString); 

    protected void reg_submit_Click(object sender, EventArgs e) 
    { 
     if (Page.IsValid) 
     { 
      // storing user input data into variable 
      var first = reg_first.Text; 
      var last = reg_last.Text; 
      var email = reg_email.Text; 
      var pass = reg_pass.Text.GetHashCode().ToString(); 
      var sub = reg_sub.Text; 
      var state = reg_state.Text; 
      var post = reg_post.Text; 
      var country = "Australia"; 

      try 
      { 
       connection.Open(); 
       SqlCommand cmd = new SqlCommand("INSERT INTO user(first, last, email, password, suburb, postcode, state, country) VALUES('"+first+"','"+last+"','"+email+"','"+pass+"','"+sub+"','"+post+"','"+state+"','"+country+"')", connection); 
       cmd.ExecuteNonQuery(); 
      } 
      catch(Exception err) 
      { 
       Label10.Text = "something gone wrong"; 
       Label10.Text += err.Message;   
      } 
      finally 
      { 
       connection.Close(); 
       // Response.Redirect("~/Pages/Home_page.aspx"); 
      } 
     } 
} 
} 

dies ist meine Datei web.config wie folgt aussieht:

<?xml version="1.0"?> 
<!--For more information on how to configure your ASP.NET application, please visit http://go.microsoft.com/fwlink/?LinkId=169433--> 

<configuration> 
<connectionStrings> 
    <add name="mumsDiaryConnectionString" connectionString="Data Source=MDASHIFURRA73C7\SQLEXPRESS;Initial Catalog=mumsDiary;Integrated Security=True" 
providerName="System.Data.SqlClient" /> 
</connectionStrings> 
<system.web> 
    <compilation debug="true" targetFramework="4.6" /> 
    <httpRuntime targetFramework="4.6" /> 
</system.web> 

<appSettings> 
    <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" /> 
</appSettings> 
</configuration> 

kann man erkennen, was das Problem hier? Prost.

+3

und der Fehler, den Sie bekommen, ist? –

+1

haben Sie den Debugger verwendet, um durch den Code zu gehen ..? erhalten Sie irgendwelche Fehler – MethodMan

+6

Dieser Code ist schlecht. Bitte schreibe es nicht so. Es ist anfällig für SQL-Injektion. Rewrite mit parametrisierter Abfrage. – user1751825

Antwort

1

Leider haben wir nicht genügend Informationen, um Ihr Problem richtig zu diagnostizieren. Aus dem, was ich sehen kann, sind dies mögliche Probleme und Sicherheitslücken. Ihre Abfrage sollte eher wie strukturiert sein:

private readonly string dbConnection = ConfigurationManager.ConnectionString[".."].ConnectionString; 
private const string queryInsertUser = "INSERT INTO [User] ([FirstName]) VALUES (@FirstName);" 

protected void SaveUser(string firstName) 
{ 
    using(var connection = new SqlConnection(dbConnection)) 
    using(var command = new SqlCommand(queryInsertUser, connection)) 
    { 
      connection.Open(); 
      command.Parameters.Add("@FirstName", SqlDbType.NVarChar).Value = first; 
      command.ExecuteNonQuery(); 
    } 
} 

So die oben würde die SQL-Injection verhindern, die Sie einführen würden, können Sie große Artikel für Salz/Hash des Benutzerpasswort auf dem Netz erhalten. Was Ihr anderes Problem betrifft, sollten Sie Folgendes prüfen:

  • Wenn Sie eine Ablaufverfolgung ausführen, sehen Sie, wie die Abfrage Ihre Sql-Instanz trifft?
  • Wenn Sie durch Ihren Code gehen, schlägt es den catch Block ein?
  • Wird Ihre Sql-Instanz tatsächlich ausgeführt, kann das Benutzerkonto Ihrer Anwendung ausgeführt werden?
  • Basierend auf dem Code, obwohl es nicht "Standard-Praxis" ist, sollte es funktionieren. Also ich glaube, dass Ihr Problem von Ihrem Sql Express ConnectionString oder der Instanz selbst stammt. Ohne weitere Informationen wird es schwer zu diagnostizieren, aber eine Ablaufverfolgung wird zeigen, wenn Sie die Datenbank korrekt treffen.

    +0

    viel schätzen Kumpel. Ich bin neu im Programmieren. noch viele Dinge zu lernen. Wie auch immer, Schritt für Schritt funktionierte großartig. und war in der Lage, das Problem zu bestimmen. Danke für die Hilfe. @Greg –

    Verwandte Themen