2016-01-26 2 views
-4

Я пытался в течение нескольких дней использовать базу данных с простым веб-базовым проектом .net. Я успешно выполнил учебник с использованием SQL compact, но было предложено использовать SQLEXPRESS, потому что он создает файлы .mdf, sames как VISUAL STUDIO.Новичок, .net C# с использованием базы данных

Из разочарования, я заново установил чистую копию: Windows 10 Visual Studio Community 2015 SQL Server Express (2014). Примечание: не запускается, если не войти в систему как: настроено на встроенную учетную запись, Local System. Это вопрос?

Вот мой код: [CODE]

@using WebMatrix.Data; 
@using System.Data.SqlClient 


@{ 



} 

@{ 
var Name = ""; 
var Position = ""; 
var Department = ""; 
var Shift = ""; 

if (IsPost) 
{ 



    Name = Request.Form["Name"]; 
    Position = Request.Form["Position"]; 
    Department = Request.Form["Department"]; 
    Shift = Request.Form["Shift"]; 

    String ConnStr = "Data Source=.\\SQLEXPRESS;Initial Catalog=\"C: \\Users\\Tevis Cox\\Documents\\Visual Studio 2015\\Projects\\TutorialPages\\TutorialPages\\App_Data\\devDB.mdf\";Integrated Security=True; MultipleActiveResultSets=True"; 
    using (SqlConnection conn = new SqlConnection(ConnStr)) 
    { 
     SqlCommand cmd = new SqlCommand(); 
     cmd.CommandText = "INSERT INTO Employees(EmployeeName, Position, Department, Shift) VALUES("+ Name + "," + Position + "," + Department +"," + Shift + ")"; 
     cmd.Connection = conn; 
     conn.Open(); 
     cmd.ExecuteNonQuery(); 
    } 


} 
} 

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8" /> 
<title>Add Personnel</title> 
</head> 
<body> 
<h1>Add Personnel</h1> 
<form method="post"> 
    <fieldset> 
     <legend>Personnel Information</legend> 
     <p> 
      <label for="Name">Name:</label> 
      <input type="text" name="Name" value="@Request.Form["Name"]" /> 
     </p> 

     <p> 
      <label for="Position">Position:</label> 
      <input type="text" name="Position" value="@Request.Form["Position"]" /> 
     </p> 

     <p> 
      <label for="Department">Department:</label> 
      <input type="text" name="Department" value="@Request.Form["Department"]" /> 
     </p> 
     <p> 
      <label for="Shift">Shift:</label> 
      <input type="text" name="Shift" value="@Request.Form["Shift"]" /> 
     </p> 

     <p><input type="submit" name="buttonSubmit" value="Add" /></p> 
    </fieldset> 
</form> 

[/ CODE] Да, я знаю, что это уязвимы для SQL Injection атаки. он будет рассмотрен.

В текущей ошибке с этой установкой указано, что логин не удался. Это после того, как я подключился к БД с помощью SQL Server Management Studio. До того, как соединиться с студией управления, он пожалуется, что там было одно имя.

Если вы знаете простой учебник, пожалуйста, укажите мне его.

+0

Похоже, ваша база данных не настроена на использование встроенной безопасности или учетной записи Windows, не имеет доступа. Есть ли вход в систему и пароль, который вы можете использовать вместо этого? Кроме того, когда вы это исправите, ваш запрос не будет работать, поскольку ни одно из значений не будет указано. Возможно, начните с простого «SELECT * FROM Employees». –

+0

'' Текущая ошибка с этой установкой говорит о том, что логин не удался. "' - Я ничего не вижу в этом коде, который бы вызвал это сообщение. (Если сообщение не поступает из самой базы данных? Пожалуйста, укажите.) Однако я вижу ошибку в вашем заявлении 'INSERT'. Вы передаете строковые значения, но не включаете эти значения в кавычки. – David

ответ

-1

Этот код работает:

@using WebMatrix.Data; 
@using System.Data.SqlClient 


@{ 



} 

@{ 
var Name = ""; 
var Position = ""; 
var Department = ""; 
var Shift = ""; 

if (IsPost) 
{ 



    Name = Request.Form["Name"]; 
    Position = Request.Form["Position"]; 
    Department = Request.Form["Department"]; 
    Shift = Request.Form["Shift"]; 

    String ConnStr = "Data Source=.\\SQLEXPRESS; AttachDbFilename=C:\\Users\\Tevis Cox\\Documents\\Visual Studio 2015\\Projects\\TutorialPages\\TutorialPages\\App_Data\\devDB.mdf; Database=\"asdfdevDB\"; User ID=tcox; Password=123; Integrated Security=True;"; 
    using (SqlConnection conn = new SqlConnection(ConnStr)) 
    { 
     SqlCommand cmd = new SqlCommand(); 
     cmd.CommandText = "INSERT INTO Employees(EmployeeName, Position, Department, Shift) VALUES(@p1, @p2, @p3, @p4)"; 
     cmd.Parameters.Add(new SqlParameter("@p1", Name)); 
     cmd.Parameters.Add(new SqlParameter("@p2", Position)); 
     cmd.Parameters.Add(new SqlParameter("@p3", Department)); 
     cmd.Parameters.Add(new SqlParameter("@p4", Shift)); 


     cmd.Connection = conn; 
     conn.Open(); 
     cmd.ExecuteNonQuery(); 
     conn.Close(); 
    } 


} 
} 

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8" /> 
<title>Add Personnel</title> 
</head> 
<body> 
<h1>Add Personnel</h1> 
<form method="post"> 
    <fieldset> 
     <legend>Personnel Information</legend> 
     <p> 
      <label for="Name">Name:</label> 
      <input type="text" name="Name" value="@Request.Form["Name"]" /> 
     </p> 

     <p> 
      <label for="Position">Position:</label> 
      <input type="text" name="Position" value="@Request.Form["Position"]" /> 
     </p> 

     <p> 
      <label for="Department">Department:</label> 
      <input type="text" name="Department" value="@Request.Form["Department"]" /> 
     </p> 
     <p> 
      <label for="Shift">Shift:</label> 
      <input type="text" name="Shift" value="@Request.Form["Shift"]" /> 
     </p> 

     <p><input type="submit" name="buttonSubmit" value="Add" /></p> 
    </fieldset> 
</form> 
</body> 
</html> 
Смежные вопросы