rafaelb 0 Denunciar post Postado Outubro 19, 2008 Boa tarde.. :) Meu problema é simples, tenho uma tabela em meu banco de dados que possui os dados dos usuários cadastrados e está tabela tem uma chave estrangeira(user_Id) da tabela aspnet_Users, e em minha tabela usuários tenho a como chave primária o campo codUsuario. Preciso armazenar esse o codUsuario do usuario logado no sistema, a solução que encontrei foi pegar o user_Id do usuário logado no sistema e realizar uma consulta na tabela "usuarios" usando esse código que retorne o campo codUsuario. Bem, o código que fiz está assim: //declaração de conexão private string connectionString = ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString; //obtendo UserId private string userId = Membership.GetUser(true).ProviderUserKey.ToString(); //variável para armazenar o código do usuário private string cdUsuario; protected void Page_Load(object sender, EventArgs e) { //criando a conexão using (SqlConnection conn = new SqlConnection(this.connectionString)){ //criando o comando string strCmd = "SELECT u.codUsuario FROM usuario AS u INNER JOIN aspnet_Users AS a ON u.UserID = a.UserId WHERE u.UserID = " + userId; SqlCommand cmd = new SqlCommand(strCmd, conn); //abrir a conexão com o database conn.Open(); //aqui que está o erro, não sei como pegar o resultado e armazenar na váriavel cdUsuario conn.Close(); } } Compartilhar este post Link para o post Compartilhar em outros sites
Lab Design 0 Denunciar post Postado Outubro 19, 2008 Tenta isso: SqlCommand cmd =new SqlCommand(strCmd, conn); cmd.CommandType = CommandType.Text; // conn.Open(); // abre a conexao SqlDataReader reader = cmd.ExecuteReader(); // cria o objeto reader do tio datareader e efetua a consulta // se retornar alguma coisa try { reader.Read() cdUsuario = (string)reader["codUsuario"]; } catch { cdUsuario = "" } Compartilhar este post Link para o post Compartilhar em outros sites
rafaelb 0 Denunciar post Postado Outubro 20, 2008 Tenta isso: SqlCommand cmd =new SqlCommand(strCmd, conn); cmd.CommandType = CommandType.Text; // conn.Open(); // abre a conexao SqlDataReader reader = cmd.ExecuteReader(); // cria o objeto reader do tio datareader e efetua a consulta // se retornar alguma coisa try { reader.Read() cdUsuario = (string)reader["codUsuario"]; } catch { cdUsuario = "" } Cara, valeu pela ajuda, agora sim tá fazendo certinho o que eu queria. Depois vo tentar fazer isso usando uma stored procedure.. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif O código ficou assim: private string connectionString = ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString; private string userId = Membership.GetUser(true).ProviderUserKey.ToString(); private string codUsuario; protected void Page_Load(object sender, EventArgs e) { //criando a conexão using (SqlConnection conn = new SqlConnection(this.connectionString)) { //criando o comando string strCmd = "SELECT usuario.codUsuario FROM usuario INNER JOIN aspnet_Users ON usuario.UserID = aspnet_Users.UserId WHERE (usuario.UserID = '" + userId + "')"; SqlCommand cmd = new SqlCommand(strCmd, conn); //abrir a conexão com o database try { conn.Open(); SqlDataReader reader = cmd.ExecuteReader(); reader.Read(); codUsuario = Convert.ToString(reader["codUsuario"]); } catch (SqlException ex) { this.ShowMessage(ex.Message); } catch (Exception ex) { this.ShowMessage(ex.Message); } } Compartilhar este post Link para o post Compartilhar em outros sites
Lab Design 0 Denunciar post Postado Outubro 20, 2008 Ok - Para usar uma procedure não esqueça de trocar o commandtype do cmd de Text para StoredProcedure. Compartilhar este post Link para o post Compartilhar em outros sites
rafaelb 0 Denunciar post Postado Outubro 21, 2008 Ok.. Agora estou com outra dúvida, se puder ajudar ficaria muito agradecido.. ^_^ Como estou usando em vários forms resolvi fazer uma classe com um método para realizar essa tarefa, até ai tudo bem, fiz a classe e ela não está dando nenhum erro, até o final dela o usuário campo recebe o valor correto, porém a váriavel que uso para puxar esse metódo na classe não recebe nenhum valor após a execução da classe.. Classe Usuario: using System; using System.Data; using System.Data.SqlClient; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; namespace webAdmin { public class Usuario { public static void obterCodUsuario(Int32 codigoUsuario) { string userId = Membership.GetUser(true).ProviderUserKey.ToString(); //declaração de conexão string connectionString = ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString; //variável para armazenar o código do usuário //criando a conexão using (SqlConnection conn = new SqlConnection(connectionString)) { //criando o comando string strCmd = "SELECT usuario.codUsuario FROM usuario INNER JOIN aspnet_Users ON usuario.UserID = aspnet_Users.UserId WHERE (usuario.UserID = '" + userId + "')"; SqlCommand cmd = new SqlCommand(strCmd, conn); //abrir a conexão com o database try { conn.Open(); SqlDataReader reader = cmd.ExecuteReader(); reader.Read(); codigoUsuario = (Int32)reader["codUsuario"]; } //tratamento de exeções catch (SqlException ex) { } catch (Exception ex) { } } } } } Como estou chamando o método: webAdmin.Usuario.obterCodUsuario(codigoAnuncio); Compartilhar este post Link para o post Compartilhar em outros sites