У меня проблема с С#, у меня есть класс с функцией для SqlDataReader и другой для SqlCommand (первый предназначен только для чтения значений из базы данных, а второй - для INSERT, UPDATE, DELETE... в той же БД ).
Проблема в том, что для первой части кода (логин) мне нужно искать значения в Active Directory (это работает), затем я должен посмотреть, есть ли у пользователя имя пользователя и пароль в моей собственной БД (это работает) , а затем, если пользователя нет в БД, мне нужно создать его и получить идентификатор, если он уже создан, мне просто нужно получить идентификатор.
Проблема в том, что я получаю это сообщение:
InvalidOperationException не было обработано пользовательским кодом
Уже существует Open DataReader, связанный с этой командой, который должен быть закрыт первым.
Есть код:
Class.cs:
private static string MyConnectionString = "THIS IS MY CONNECTION";
private SqlConnection MyConnection = new SqlConnection(MyConnectionString);
public SqlCommand MyCommand = new SqlCommand();
public SqlDataReader MyReader = null;
public void DBMyReader(String SqlQuery)
{
if (MyConnection.State != ConnectionState.Open)
MyConnection.Open();
MyCommand.Connection = MyConnection;
MyCommand.CommandText = SqlQuery;
MyReader = MyCommand.ExecuteReader(CommandBehavior.CloseConnection);
}
public void DBMyUpdate(String SqlQuery)
{
if (MyConnection.State != ConnectionState.Open)
MyConnection.Open();
var cmdTest = new SqlCommand();
cmdTest.Connection = MyConnection;
cmdTest.CommandText = SqlQuery;
cmdTest.ExecuteNonQuery();
}
public void DBMyInsert(String SqlQuery)
{
DBMyUpdate(SqlQuery);
}
** Логин.aspx.cs: **
MyClass.DBMyReader("SELECT util_codi,util_logi,util_nome FROM Tgep_util WHERE util_logi='"
+ Session["username"].ToString() + "'");
MyClass.MyReader.Read();
if (!MyClass.MyReader.HasRows)
{
MyClass.MyReader.Close();
MyClass.DBMyInsert("INSERT INTO Tgep_util(util_logi,util_nome) "
+ "VALUES ('" + Session["username"].ToString() + "','" + Session["nome"].ToString() + "')");
}
MyClass.DBMyReader("SELECT util_codi,util_logi,util_nome FROM Tgep_util WHERE util_logi='"
+ Session["username"].ToString() + "'");
MyClass.MyReader.Read();
Session["user_id"] = MyClass.MyReader["util_codi"].ToString();
Response.Redirect("FRM_Principal.aspx");
Изменить: обновить код (пока работает)