2015-07-14 2 views
1

В моем коде у меня есть этотКак проверить, если LOGON USER уже ответил

<h2> Address Book</h2> <br /> 
    <table> 
    <tr><td><b>User:</b></td><td><asp:Label ID="useren" runat="server"></asp:Label></td></tr> 
    <tr><td><b>Business:</b></td><td><asp:TextBox ID="business" runat="server" MaxLength="13"></asp:TextBox> (Example: 234925xxx)</td></tr> 
    <tr><td><b>Business 2:</b></td><td><asp:TextBox ID="business2" runat="server" MaxLength="13"></asp:TextBox> (Example: xxxx)</td></tr> 
    <tr><td><b>Mobile:</b></td><td><asp:TextBox ID="mobile" runat="server" MaxLength="13"></asp:TextBox> (Example: 9xxxxxxxx)</td></tr> 
    <tr><td colspan="2"><asp:Label ID="Label1" runat="server" Font-Bold="True"></asp:Label></td></tr> 
    <tr><td><asp:Button ID="Button1" runat="server" Text="Save" onclick="cmdSave_Click2" /></td><td></td></tr> 
    </table 

В моем коде позади этого, чтобы получить вход пользователя

protected void Page_Load(object sender, EventArgs e) 
{ 
    useren.Text = "[" + HttpContext.Current.User.Identity.Name + "]"; 
} 

Это на хранение в текстовом поле и вход в систему пользователя в базе данных

protected void cmdSave_Click2(object sender, EventArgs e) 
{ 
    string sFilePath = Server.MapPath("Database3.accdb"); 
    OleDbConnection Conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + sFilePath + ";Persist Security Info=False;"); 
    string insertCmd = "INSERT INTO Worker(Business,Business2,Mobile,username) VALUES (@Business,@Business2,@Mobile,@useren)"; 
    using (Conn) 
    { 
     Conn.Open(); 
     OleDbCommand myCommand = new OleDbCommand(insertCmd, Conn); 
     myCommand.Parameters.AddWithValue("@Business", business.Text); 
     myCommand.Parameters.AddWithValue("@Business2", business2.Text); 
     myCommand.Parameters.AddWithValue("@Mobile", mobile.Text); 
     myCommand.Parameters.AddWithValue("@useren", HttpContext.Current.User.Identity.Name); 
     myCommand.ExecuteNonQuery(); 
     Label1.Text = "Saved Successfull!"; 
     Label1.ForeColor = System.Drawing.Color.Green; 
    } 
} 

Как я могу проверить, ответил ли пользователь, выполнивший вход в систему? Моя цель заключается в том, что пользователь входа в систему уже существует. База данных доступа извлекает его данные или как я могу сделать, когда я запускаю кнопку onclick = "cmdSave_Click2", если пользователь существует, извлекает метку с предупреждением «пользователь уже ответил», например

+0

[Пожалуйста, узнать о форматировании] (http://stackoverflow.com/editing-help) – freefaller

ответ

1

Попробуйте сделать так. Это может дать вам идею решить проблему.

protected void cmdSave_Click2(object sender, EventArgs e) 
{ 
    string sFilePath = Server.MapPath("Database3.accdb"); 
    OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + sFilePath + ";Persist Security Info=False;"); 
    con.Open(); 
    OleDbCommand cmd1 = new OleDbCommand("Select count(*) from Worker where username = '"+HttpContext.Current.User.Identity.Name+"'",con); 
    int total = (Int32)cmd1.ExecuteScalar(); 
    if(total==0) 
    { 
    OleDbConnection Conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + sFilePath + ";Persist Security Info=False;"); 
    string insertCmd = "INSERT INTO Worker(Business,Business2,Mobile,username) VALUES (@Business,@Business2,@Mobile,@useren)"; 
    using (Conn) 
    { 
    Conn.Open(); 
    OleDbCommand myCommand = new OleDbCommand(insertCmd, Conn); 
    myCommand.Parameters.AddWithValue("@Business", business.Text); 
    myCommand.Parameters.AddWithValue("@Business2", business2.Text); 
    myCommand.Parameters.AddWithValue("@Mobile", mobile.Text); 
    myCommand.Parameters.AddWithValue("@useren", HttpContext.Current.User.Identity.Name); 
    myCommand.ExecuteNonQuery(); 
    Label1.Text = "Saved Successfull!"; 
    Label1.ForeColor = System.Drawing.Color.Green; 
    Conn.Close(); 
    } 
    } 
    else 
    { 
     Label1.Text = "Existing user"; 
    } 
    con.Close(); 
} 
+0

Дайте мне ошибки [[Error \t \t 1 'System.Data.OleDb.OleDbDataReader' не содержит определения для «Строки» и никакой метод расширения «Строки», принимающие первый аргумент типа «System.Data.OleDb.OleDbDataReader», могут быть найдены (вам не хватает директивы using или ссылки на сборку?)]] – KikoFHM

+0

Проверьте мой ответ. Я обновил его по вашему желанию. Отметьте это как ответ, если он разрешит вашу проблему. – gkrishy

+0

Как изменить состояние соединения? (да, я изучаю) Это дает мне ошибку: «* ExecuteScalar требует открытого и доступного соединения. Текущее состояние соединения закрыто. *« – KikoFHM

Смежные вопросы