2015-05-03 2 views
-3

Я сказал это достаточно ясно, я пытаюсь вставить значения в базу данных через C# и не работает с кодом, который у меня есть. Не нужно ставить мой вопрос. Я думал, что это может быть место, где новички могут найти помощь, а не смотреть на людей!Попытка вставить значения в базу данных с страницы ASP.NET

Я пытаюсь вставить значения в базу данных через asp.net и C#. У меня есть основная форма опроса с комбинацией текстовых полей и переключателей. Когда я запускаю код для вставки значений, значение переключателя вставляется в тонкий. У меня возникают проблемы с значениями текстового поля.

ASP.NET разметки:

Date of Flight&nbsp;<asp:TextBox ID="flightdate" runat="server" /><br /> 
Time of Flight&nbsp;<asp:TextBox ID="flightTime" runat="server" /><br /> 
Flight Number&nbsp;<asp:TextBox ID="flightNum" runat="server" /><br /> 
Flight Destination&nbsp;<asp:TextBox ID="flightDest" runat="server" /><br /> 

<strong>Friendliness of customer staff: </strong> 
<asp:RadioButtonList ID="question1" runat="server"> 
<asp:ListItem Value="No Opinion"                 Selected="True">No Opinion</asp:ListItem> 
<asp:ListItem Value="Poor">Poor</asp:ListItem> 
<asp:ListItem Value="Fair">Fair</asp:ListItem> 
<asp:ListItem Value="Good">Good</asp:ListItem> 
<asp:ListItem Value="Excellent">Excellent</asp:ListItem> 
</asp:RadioButtonList> 

И C# код позади:

string flightDate = Request.QueryString["flightDate"]; 
    string flightTime = Request.QueryString["flightTime"]; 
    string flightNum = Request.QueryString["flightNum"]; 
    string flightDest = Request.QueryString["flightDest"]; 
    string selectedFriend = ""; 
    string selectedSpace = ""; 
    string selectedComfort = ""; 
    string selectedCleanliness = ""; 
    string selectedNoise = ""; 

    for (int i = 0; i < question1.Items.Count; ++i) 
    { 
     if (question1.Items[i].Selected) 
     { 
       selectedFriend = question1.Items[i].Value; 
     } 
    } 

    SqlConnection dbConnection = new SqlConnection("Data Source=IDEA-PC\\SQLEXPRESS; Integrated Security=True"); 

    try 
    { 
     dbConnection.Open(); 
     dbConnection.ChangeDatabase("airlineSurvey"); 

     string results = "INSERT INTO results(flightDate, flightTime, flightNumber, flightDestination, friendliness) " + "VALUES('" + flightDate + "', '" + flightTime + "', '" + flightNum + "', '" + flightDest + "', '" + selectedFriend + "')"; 

     SqlCommand sqlCommand = new SqlCommand(results, dbConnection); 
     sqlCommand.ExecuteNonQuery(); 

     regMessage.Text = "<p>Thank you for your feedback!</p>"; 
    } 
    catch (SqlException exception) 
    { 
     Response.Write("<p>Error code " + exception.Number + ": " + exception.Message + "</p>"); 
    } 

    dbConnection.Close(); 
} 
+3

[SQL Injection alert] (http://msdn.microsoft.com/en-us/library/ms161953%28v=sql.105%29.aspx) - вы должны ** не ** объединить ваш SQL заявления - используйте ** параметризованные запросы ** вместо этого, чтобы избежать инъекции SQL –

+0

Что происходит с текстовыми полями? Вы действительно не говорите, в чем проблема. –

+0

Начинающие могут найти помощь здесь, но они должны прочитать [ask], прежде чем задавать плохие вопросы, которые будут приостановлены (пока вы не исправите вопрос). Затем вопрос можно возобновить. Вы никогда не говорили, какая «проблема» у вас была с текстовыми полями. Обратите внимание, что у вас есть хорошие ответы, хотя вы не задали хороший вопрос. –

ответ

1

Причина вы получаете пустые значения, что вы должны использовать Request.Form вместо Request.QueryString.

Однако, так как ваши текстовые поля уже контролирует стороне сервера, то вам даже не нужно использовать Request.Form, как вы можете просто использовать:

var flightDate = this.flightdate.Text; 
var flightTime = this.flightTime.Text; 
var flightNum = this.flightNum.Text; 
var flightDest = this.flightDest.Text; 

Кроме того, как вы строите SQL запрос очень плохо - вы включаете SQL-инъекцию.

Пожалуйста, обратите внимание на: https://stackoverflow.com/a/9162904/461810

+1

Это сработало, спасибо. Я понимаю, что кодирование небезопасно. Я просто на начальных этапах обучения C# – crystalreign2015

1

Вы должны получить доступ к значениям TextBoxes с помощью свойства текста:

string flightDate = flightDate.Text; 
string flightTime = flightTime.Text; 
string flightNum = flightNum.Text; 
string flightDest = flightDest.Text; 

но есть еще возможности для совершенствования: дат, вы должны использовать календарь контроль, для поля назначения было бы неплохо выбрать из управления ComboBox и т. д.

0

Это сработало лучше:

var flightDate = this.flightdate.Text; 
var flightTime = this.flightTime.Text; 
var flightNum = this.flightNum.Text; 
var flightDest = this.flightDest.Text; 
Смежные вопросы