Подключение к SQL Server в ASP.NET

#c# #.net #sql-server #sql-server-2005 #ado.net

#c# #.net #sql-сервер #sql-server-2005 #ado.net

Вопрос:

Я пытаюсь подключиться к SQL Server из Visual Web Developer с помощью asp.net но я сталкиваюсь с некоторыми проблемами, если кто-нибудь поможет в этом отношении, я буду благодарен.

 public partial class _Default : Page
{
    protected void Page_Load(object sender, EventArgs e)            
    {     
        SqlConnection conn = new SqlConnection("Server=localhost;"   "Database=DB;User ID=aaaa;"   "Password=aaaa");

        conn.Open(); SqlDataReader reader = conn.ExecuteReader(); 
        while (reader.Read()) {
            employeesLabel.Text  = reader["Name"]   "<br />";
        }
        reader.Close(); 
        conn.Close();               
    }
}
  

Я получаю ошибки, говорящие

‘System.Data.SqlClient.SqlConnection’ не содержит определения для ‘ExecuteReader’ и не удалось найти метод расширения ‘ExecuteReader’, принимающий первый аргумент типа ‘System.Data.SqlClient.SqlConnection’ (вам не хватает директивы using или ссылки на сборку?)

Имя ‘employeesLabel‘ не существует в текущем контексте.

Кто-нибудь может назвать возможную причину?

Комментарии:

1. вам не хватает директивы using или ссылки на сборку?

2. Интересно, что выполняется подключение….

Ответ №1:

я думаю, вам также нужно создать объект класса SqlCommand и передать командную строку его конструктору. попробуйте это»

 SqlConnection conn = new SqlConnection("Data Source=serverName;"
             "Initial Catalog=databaseName;"
             "Persist Security Info=True;"
             "User ID=userName;Password=password");

conn.Open();

// create a SqlCommand object for this connection
SqlCommand command = conn.CreateCommand();
command.CommandText = "Select * from tableName";
command.CommandType = CommandType.Text;

// execute the command that returns a SqlDataReader
SqlDataReader reader = command.ExecuteReader();

// display the results
while (reader.Read()) {
    //whatever you want to do.
}

// close the connection
reader.Close();
conn.Close();
  

Ответ №2:

Попробуйте

 SqlConnection conn = new SqlConnection("Server=localhost;"   "Database=DB;User ID=aaaa;"   "Password=aaaa");              
conn.Open();
SqlCommand cmd = new SqlCommand("Your Query", conn);//Put your query here
SqlDataReader reader = cmd.ExecuteReader();              
while (reader.Read()) 
{                 
    employeesLabel.Text  = reader["Name"]   "<br />"; 
} 
reader.Close();             
conn.Close(); 
  

Комментарии:

1. Спасибо, что ответил на его ошибку «Имя ’employeesLabel’ не существует в текущем контексте», которая все еще существует.

2. Ярлык сотрудника. Text = reader[«Имя»] «<br />»; Видите ли вы какую-либо ошибку в приведенной выше строке?

3. Обновите ’employeesLabel’ именем вашей метки, текстовое свойство которой вы хотите установить.

Ответ №3:

 using (SqlConnection conn = new SqlConnection(...))
using (SqlCommand command = conn.CreateCommand())
{
    command.CommandText = "...";
    conn.Open();
    using (SqlDataReader reader = command.ExecuteReader())
    {
        // do the sutff
    }
}
  

Ответ №4:

Упс! Только реализации IDbCommand имеют ExecuteReader, возвращающий весь DataReader:

Ответ №5:

Вы не передаете какую-либо команду / запрос в ExecuteReader, что-то вроде этого было бы правильным:

 SqlDataReader rdr = null;
conn.Open();
SqlCommand cmd = new SqlCommand("select * from Customers", conn);
rdr = cmd.ExecuteReader();
  

Ответ №6:

В SqlConnection нет никакого метода ExecuteReader(). Вы должны создать объект из SqlCommand. Вашему коду должно понравиться это:

 namespace LearningASP

{ public partial class _Default : System.Web.UI.Page

{ protected void Page_Load(object sender, EventArgs e)

{

SqlConnection conn = new SqlConnection("Server=localhost;"   "Database=DB;User ID=aaaa;"   "Password=aaaa");

        conn.Open(); 
**SqlCommand cmd = new SqlCommand();
        SqlDataReader reader = cmd.ExecuteReader();** 
while (reader.Read()) {             employeesLabel.Text  = reader["Name"]   "<br />"; } reader.Close();          conn.Close();      } } }