Я работаю над проектом, который был создан с использованием asp.net в качестве внешнего интерфейса и SQL Server Express (2008) в качестве внутреннего.Мы завершили проект, но после установки в расположении клиента, когда несколько пользователей входят в систему и используют одну и ту же форму для выполнения транзакции, тогда данные для всех пользователей не совпадают.Пока мы создали отдельный ИД пользователя и Логин для всех пользователей.Кто-нибудь может подсказать мне, что мне делать?
Я определил режим проверки подлинности Windows. В форме входа в систему я проверяю пользователя из базы данных, верны ли пароль и имя пользователя.
- SP_1 выполняется для вставки данных в таблицу 1.
- Первичный ключ из таблицы извлекается на страницу aspx.cs.
- Этот первичный ключ предоставляется SP_2 пос другими параметрами для вставки в таблицу 2.
предположим, что пользователь # 1 ввел данные в раздел заголовка (для таблицы 1) и добавил две или более подробностей в раздел сведений (для таблицы 2).используя его идентификатор.Кроме того, пользователь # 2 ввел данные в раздел заголовка (для таблицы 1) и добавил две или более подробностей в раздел сведений (для таблицы 2). Используя свой идентификатор Оба они одновременно нажимают кнопку сохранения в этом, некоторыеДанные времени одного пользователя не экономят.но если он сохранен, он отображает данные пользователя для одного пользователя и наоборот.
Я пробовал BeginTran и CommitTran в SQL и .net бэкэнд.
Ниже приведен мой код:
protected void btnprint_Click(object sender, EventArgs e)
{
string query;
query = "delete amcreport where userid='"+Session["userid"].ToString()+"';
insert(query);
query = " select compname, accountname, accountname, accountno, bankname, branch, ifsc from tblcomapany where compid='" + ddlcompany.SelectedValue.ToString() + "' ";
DataTable dtcomp = GetData(query);
//Here the commented code is the one I tried to achieve the things I want.
//r = new Random();
//trn1 = r.Next(1, 10);
//msec = DateTime.Now.Millisecond;
//System.Threading.Thread.Sleep(msec);
//query = " DECLARE @MyDateTime DATETIME";
//query += " SET @MyDateTime = DATEADD(s, "+trn+", GETDATE())";
// query = "SET TRANSACTION ISOLATION LEVEL SERIALIZABLE";
//query = " Begin Transaction";
query = " INSERT INTO amcreport";
query += " select '" + Session["userid"].ToString() + "' as userid,'" + dtcomp.Rows[0]["ifsc"].ToString() + "' as ifsc,'" + dtcomp.Rows[0]["branch"].ToString() + "' as branch,'" + dtcomp.Rows[0]["bankname"].ToString() + "' as bankname,'" + dtcomp.Rows[0]["compname"].ToString() + "' as compname,'" + dtcomp.Rows[0]["accountname"].ToString() + "' as accountname,'" + dtcomp.Rows[0]["accountno"].ToString() + "' as accountno,m.busscity,m.bussstate,(isnull(m.title,'')+' '+isnull(m.first,'')+' '+isnull(m.middle,'')+' '+isnull(m.last,''))as name,a.software,m.busscompany,m.bussaddress1,m.bussaddress2,m.bussaddress3,m.mobile,m.mobile2,m.bussphone,m.bussphone2,";
query += " convert(varchar,a.LetterDate,103) as LetterDate,a.AMCno,convert(varchar,a.AMCStartDate,103) as AMCStartDate,convert(varchar,a.AMCEndDate,103) as AMCEndDate,a.Dongle,a.TotAmount,a.remarks";
query += " from AMCDetails a";
query += " inner join member m on m.memid = a.memid where a.memid = '" + Session["memid"].ToString() + "' and amcid ='" + amcid + "'";
//query += " WAITFOR TIME @MyDateTime";
//query += " Commit Transaction ";
//r = new Random();
//trn1 = r.Next(1, 10);
//msec = DateTime.Now.Millisecond;
//System.Threading.Thread.Sleep(msec);
insert(query);
Session["email"] = "";
if (chksendmail.Checked == true)
{
Session["email"] = txtemail.Text;
}
Session["amcid"] = "";
Session["amcid"] = amcid;
Session["reportname"] = "AMCREPORT.rpt";
ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "Script1", "ShowPopup('reportviewer.aspx');", true);
}
private void insert(String query)
{
string constr = ConfigurationManager.ConnectionStrings["CONNECTION"].ConnectionString;
SqlConnection con = new SqlConnection(constr);
con.Open();
//SqlTransaction objtransaction = con.BeginTransaction(System.Data.IsolationLevel.ReadUncommitted);
//using (SqlConnection con = new SqlConnection(constr))
//{
//SqlCommand command = con.CreateCommand();
// SqlTransaction transaction;
//transaction = con.BeginTransaction(IsolationLevel.Serializable, Session["userid"].ToString());
//command.Connection = con;
//command.Transaction = transaction;
try
{
//string a = " BEGIN TRANSACTION ";
//query = a + query + " WITH (TABLOCK, HOLDLOCK)";
SqlCommand cmd = new SqlCommand();
cmd.CommandText = query;
cmd.Connection = con;
//cmd.Transaction = transaction;
//int id = 0;
//while (id == 0)
//{
cmd.ExecuteNonQuery();
//}
//transaction.Commit();
con.Close();
//command.CommandText = query;
//command.ExecuteNonQuery();
//transaction.Commit();
}
catch (Exception EX)
{
con.Close();
}
finally
{
con.Close();
}
//}
}