Esta clase sirve para conectar un proyecto Web en asp con C# con la base de datos Postgresql, se debe reemplazar el nombre de la base de datos, el usuario y la contraseña, y se da la ruta del servidor, si es local se deja localhost, esta clase tiene el puerto por defecto de la base de datos.
Tiene metodos y atributos estaticos, o sea que no se instancia.
Recuerda que para usar esta clase debes tener la libreria Npgsql para la conexion del proyecto con la base de datos. En esta pagina puedes bajarla:
http://npgsql.projects.postgresql.org/
public class Conexion
{
private static string connection = "server=localhost; port=5432;" +
"Database=db;" +
"User ID=usuario;" +
"Password=contraseña;";
private static IDbConnection connect;
private static IDbCommand comando;
public static IDataReader reader;
public static IDbTransaction transaccion;
public static IDataRecord update;
public static void conexion()//con este metodo se abre la conexion
{
connect = new NpgsqlConnection(connection);
connect.Open();
}
public static void executeQuery(string sql)/// este metodo recibe la cadena con la sentencia
{
comando = connect.CreateCommand();
comando.CommandText = sql;
reader = comando.ExecuteReader();
//updateQuery(sql);
}
public static void insertQuery(String sql)// este metodo recibe la cadena con la sentencia
{
comando = connect.CreateCommand();
comando.Transaction = transaccion;
comando.CommandText = sql;
comando.ExecuteScalar();
}
public static void updateQuery(String sql)// este metodo recibe la cadena con la sentencia
{
NpgsqlConnection conn = new NpgsqlConnection(connection);
conn.Open();
NpgsqlCommand comando = new NpgsqlCommand(sql, conn);
}
public static void desconectar()//este metodo cierra la conexion del query
{
reader.Close();
comando.Dispose();
connect.Close();
}
public static void desconectarinsert()// este metodo cierra la conexion del insert y update
{
comando.Dispose();
connect.Close();
}
}
Hola, me gustaria saber como se recupera los datos en el formulario web del reader.
ResponderEliminargracias
Lo puedes obtener por ejempo así:
ResponderEliminarConexion.conexion();//abres la conexion
Conexion.executeQuery("SELECT * FROM tabla WHERE id =123);//consultas
int numero;
string texto;
while (Conexion.reader.Read())//con el while recorres el reader
{
// este caso extraes un valor int de la base de datos y lo extraes así
numero = Conexion.reader.GetInt32(Conexion.reader.GetOrdinal("empleadoidn"));
// este caso extraes un valor string de la base de datos y lo extraes así
texto = Conexion.reader.GetString(Conexion.reader.GetOrdinal("enombrev"));
}
Conexion.desconectar();//cierras la conexion
Espero sea claro
saludos
oye esta funcion no guarda los datos, aparentemente hace todo bien pero nada.
ResponderEliminarpublic static void updateQuery
oye ya funciono haciendole cambios jeje a la mima
ResponderEliminarok
ResponderEliminary cuando el campo permite valores nulos-
ResponderEliminarUnable to cast object of type 'System.DBNull' to type 'System.String'.
Source=Npgsql
espero por favor resuelvas mi incognita
Cómo así? puedes ser más especifico.
ResponderEliminarApellidoPaterno = ConexionPsql.reader.GetString(ConexionPsql.reader.GetOrdinal("apellido_paterno")),
ResponderEliminarle asigno de esta manera a una variable.
el hecho es que el campo en mi tabla permite valores nulos.
entoncess como el registro de dicha columna es nula.
me sale este error // Unable to cast object of type 'System.DBNull' to type 'System.String'.
Source=Npgsql
Podrias intentar con:
ResponderEliminarif(!String.IsNullOrEmpty(ConexionPsql.reader.GetOrdinal("apellido_paterno")){
ApellidoPaterno = ConexionPsql.reader.GetString(ConexionPsql.reader.GetOrdinal("apellido_paterno")),
}
O con esto tambien puedes probar:
ResponderEliminarif (ConexionPsql.reader.GetOrdinal("apellido_paterno") != DBNull.Value)
{
ApellidoPaterno= ConexionPsql.reader.GetString(ConexionPsql.reader.GetOrdinal("apellido_paterno")),
}
else
{
ApellidoPaterno="";
}