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