jueves, septiembre 20, 2007

Insertar un DateTime en SQL Server - C#

Creo que muchas veces todos nos hemos topado con éste problema.

Ésto se debe al idioma con el que esta configurada tu base de datos y el idioma que maneja tu PC. No es un gran problema si es sola una PC donde manejaras el sistema (Win/Web) ya que casas los idiomas homologando el de la BD con el de tu PC y listo!!

Pero que pasa cuando tu aplicacion sera utilizado en diferentes en diferentes computadoras con diferentes idiomas... aqui es cuando se pueden venir mas problemas

Al insertar marcará un error ya que el formato del DateTime de la maquina no es el formato de fecha que espera tu Base de Datos, es por eso que vamos a utilizar parametros.

SQL tiene ciertos "estandares" por llamarlo asi, donde dentro de ellas esta el formato de la fecha.
Donde tu en código no tienes que preocuparte por saber que idioma tiene definido la BD

dd-mm-yyyy

Tips: En tu codido... tu fecha separala en dia, mes y año y crea una cadena con el orden anterior y de esa manera instertala en tu base de datos

//Inicializacion de Datos
string cadena = "Marcela";
bool booleano = true;
string fecha = String.Format("{0}-{1}-{2}", 24, 12, 1983);
string fechaFormato = String.Format("{0:d}", fecha);
int entero = 25;

//Query de Insersion
SqlConnection con = new SqlConnection(@"Data Source=OCARIZ\SQLEXPRESS;Initial Catalog=Pruebas;Integrated Security=True");
SqlCommand command = new SqlCommand("INSERT INTO PRUEBA (cadena,booleano,fecha,entero) VALUES (@cadena,@booleano,@fecha,@entero)", con);
command.Parameters.AddWithValue("@cadena", cadena);
command.Parameters.AddWithValue("@booleano", booleano);
command.Parameters.AddWithValue("@fecha", fecha);
command.Parameters.AddWithValue("@entero", entero);

try
{
con.Open();

int res = command.ExecuteNonQuery();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}