У меня проблема с C #, у меня есть класс с функцией для 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);
}
** Login.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");
Редактировать: Обновить код (работает на данный момент)