2016-03-25 3 views
-2

Я пытаюсь вставить данные (пользовательский ввод) в базу данных SQL Server. Все выглядит нормально, но на самом деле это не вставляет какие-либо данные в базу данных. Код за файл (default.aspx.cs) выглядит следующим образом:Вставка данных в базу данных SQL Server из 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"); 
      } 
     } 
} 
} 

это мой файл web.config выглядит следующим образом:

<?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> 

кто может определить, что здесь проблема? веселит.

+3

и ошибка, которую вы получаете? –

+1

Вы использовали отладчик, чтобы пройти через код ..? вы получаете какие-либо ошибки – MethodMan

+6

Этот код плохой. Пожалуйста, не пишите это так. Он уязвим для SQL-инъекций. Перепишите с параметризованным запросом. – user1751825

ответ

1

К сожалению, у нас недостаточно информации для правильной диагностики вашей проблемы, поскольку я вижу, что это потенциальные проблемы и недостатки безопасности. Ваш запрос должен быть структурирован больше как:

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

Так что выше будет препятствовать Sql Injection, что бы вы представить, вы можете получить большие статьи для Salt/Хэш пароля пользователя на веб. Что касается вашей другой проблемы, вы должны проверить следующее:

  • Когда вы запускаете трассировку, вы видите, что запрос попал в ваш экземпляр Sql?
  • Когда вы проходите через свой код, он попадает в блок catch?
  • Действительно ли ваш экземпляр Sql запущен, позволяет ли он запускать учетную запись вашего приложения?

Основываясь на коде, хотя это не «стандартная практика», он должен работать. Поэтому я считаю, что ваша проблема связана с вашим Sql Express ConnectionString или самим экземпляром. Без дополнительной информации будет сложно правильно диагностировать, но трассировка покажет, правильно ли вы попали в базу данных.

+0

очень ценный помощник. Я новичок в программировании. еще много вещей, чтобы учиться. в любом случае шаг за шагом работал отлично. и смог определить проблему. Спасибо за помощь. @Greg –

Смежные вопросы