/*
Clase tipo capa de datos para Sql Server Compact Edition.
*/
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.Common;
using System.Data.SqlServerCe;
class DBPortable
{
private static string dbName = "MyDB";
private static string pass = "123456";
private static string connString = "Data Source =\"|DataDirectory|\\" + dbName + ".sdf\"; Password =\"" + pass + "\";";
private SqlCeConnection conn = new SqlCeConnection(connString);
public DBPortable()
{
if (!HaveDB())
{
CreateDB();
CreateSchema();
}
}
private bool HaveDB()
{
if (System.IO.File.Exists(conn.Database))
{
return true;
}
else
{
return false;
}
}
private void CreateDB()
{
using (SqlCeEngine sqlCeEngine = new SqlCeEngine(connString))
{
sqlCeEngine.CreateDatabase();
}
}
public string BuildQueryFromString(string sp, string[] param)
{
string query = sp + " '";
int i = 0;
foreach (string p in param)
{
if (i < param.Length - 1)
query += p + "', '";
else
query += p + "'";
i++;
}
return query;
}
public DataSet ExecQuery(string iQuery)
{
DataSet ds = new DataSet();
SqlCeDataAdapter adapter = new SqlCeDataAdapter();
try
{
SqlCeCommand command = new SqlCeCommand(iQuery, this.conn);
adapter.SelectCommand = command;
this.conn.Open();
command.Connection = this.conn;
adapter.Fill(ds);
}
catch (SqlCeException ex)
{
Console.WriteLine(ex.Message);
}
finally
{
this.conn.Close();
}
return ds;
}
public DataSet ExecSP(string sp, string[] param)
{
string iQuery = BuildQueryFromString(sp, param);
DataSet ds = new DataSet();
SqlCeDataAdapter adapter = new SqlCeDataAdapter();
try
{
SqlCeCommand command = new SqlCeCommand(iQuery, this.conn);
adapter.SelectCommand = command;
this.conn.Open();
command.Connection = this.conn;
adapter.Fill(ds);
}
catch(SqlCeException ex)
{
Console.WriteLine(ex.Message);
}
finally
{
this.conn.Close();
}
return ds;
}
private void CreateSchema()
{
string q = "CREATE TABLE TablaDePrueba(ID int NULL, FechaHora DATETIME NULL, ESTADO NCHAR(1))";
this.ExecuteNonQuery(q);
}
private int ExecuteNonQuery(string query)
{
int RowsAffected = 0;
SqlCeCommand objCom = new SqlCeCommand();
objCom.CommandText = query;
try
{
this.conn.Open();
objCom.Connection = this.conn;
RowsAffected = objCom.ExecuteNonQuery();
}
catch (SqlCeException ex)
{
Console.WriteLine(ex.Message);
}
finally
{
this.conn.Close();
}
return RowsAffected;
}
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario