Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: TrashAmbishion en 19 Diciembre 2012, 17:23 pm



Título: Problemilla con Sqlite !!
Publicado por: TrashAmbishion en 19 Diciembre 2012, 17:23 pm
Hola chicos tengo una aplicación donde estoy sacando informacion de una BD Sqlite y la estoy mostrando en una DataGrid sin problemas, la cuestion es que necesito una ves que termine mis modificaciones salvar los datos y no encuentro como, estuve mirando un ejemplo pero me da un error.. aqui les dejo el link... gracias cualquier sugerencia...

http://sqlite.phxsoftware.com/forums/p/2291/9199.aspx

Salu2


Título: Re: Problemilla con Sqlite !!
Publicado por: Novlucker en 19 Diciembre 2012, 23:29 pm
¿En mi caso y para empezar, prefiero utilizar SQL Server CE en lugar de SQLite, pero fuera de eso, puedes publicar el código que tienes hasta el momento?

Saludos


Título: Re: Problemilla con Sqlite !!
Publicado por: TrashAmbishion en 20 Diciembre 2012, 18:00 pm
Bueno ando mirando el SQL SERVER CE

Mientras este es el código que uso para cargar la información al DataGrid

Código
  1.  
  2.       Public Function RecogerConsulta(ByVal mySql As String) As DataTable
  3.  
  4.       Dim tmpTable As New DataTable
  5.  
  6.        Try
  7.  
  8.               cnnl = New SQLiteConnection("Data Source=Clientes.s3db")
  9.  
  10.               cnnl.Open()
  11.  
  12.               Ada = New SQLiteDataAdapter(mySql, cnnl)
  13.  
  14.               Ada.Fill(tmpTable)
  15.  
  16.               cnnl.Close()
  17.  
  18.        Catch ex As Exception
  19.  
  20.               Msgbox(ex.Message, "Error")
  21.  
  22.        End Try
  23.  
  24.        Return tmpTable
  25.  
  26.        End Function
  27.  
  28.        Private Sub Form1_Load
  29.  
  30.               datagrid1.DataSource = bd.RecogerConsulta("SELECT * FROM Usuario")
  31.  
  32.        End Sub
  33.  
  34.  

Ahora el codigo que da un error de Tipos es el siguiente.

Código
  1.  
  2.        Dim SQLconnect As New System.Data.SQLite.SQLiteConnection
  3.        Dim dataSet = New DataSet()
  4.  
  5.        SQLconnect.ConnectionString = "Data Source=Clientes.s3db"
  6.  
  7.        dataSet = dg1.DataSource
  8.  
  9.        SQLconnect.Open()
  10.  
  11.        Dim dataAdapter = New SQLiteDataAdapter("SELECT * FROM Usuario", SQLconnect)
  12.  
  13.        Dim CB As SQLiteCommandBuilder = New SQLiteCommandBuilder(dataAdapter)
  14.  
  15.        dataAdapter.UpdateCommand = CB.GetUpdateCommand()
  16.        dataAdapter.InsertCommand = CB.GetInsertCommand()
  17.        dataAdapter.DeleteCommand = CB.GetDeleteCommand()
  18.  
  19.        [b]dataAdapter.Update(dataSet, "Usuario")[/b]
  20.  
  21.  

bueno amigos help


Título: Re: Problemilla con Sqlite !!
Publicado por: Novlucker en 20 Diciembre 2012, 18:23 pm
El tag Geshi para vb.net es [code=vbnet][/code] :P

En el segundo código, ¿el update no recibe solamente un parámetro?

Saludos


Título: Re: Problemilla con Sqlite !!
Publicado por: TrashAmbishion en 21 Diciembre 2012, 00:14 am
En la MSDN esta este ejemplo que trabaja con el DataAdapter como tu dices pero obtengo una excepcion y supongo que sea cuando hago

Código
  1.    'No se pq esto me parece que esta mal
  2.    dataset = dg1.datasource
  3.  

Y este es el ejemplo de la MSDN

Código
  1.  
  2. Public Function CreateCmdsAndUpdate(ByVal dataSet As DataSet, _
  3. ByVal connectionString As String, ByVal queryString As String) As DataSet
  4.  
  5.    Using connection As New OleDbConnection(connectionString)
  6.        Dim adapter As New OleDbDataAdapter()
  7.        adapter.SelectCommand = New OleDbCommand(queryString, connection)
  8.        Dim builder As OleDbCommandBuilder = New OleDbCommandBuilder(adapter)
  9.  
  10.        connection.Open()
  11.  
  12.        Dim customers As DataSet = New DataSet
  13.        adapter.Fill(customers)
  14.  
  15.        ' Code to modify data in DataSet here
  16.  
  17.        'Supongo que aqui es donde va la linea que creo esta mal
  18.        'que tiene los cambios en memoria. Pero obtengo la excepcion que tambien
  19.        'la explican ahi mismo en la pagina
  20.  
  21.         'DBConcurrencyException
  22.  
  23.        dataset = dg1.datasource
  24.  
  25.  
  26.        adapter.Update(customers)
  27.        Return customers
  28.    End Using
  29. End Function
  30.  
  31.  

La web

http://msdn.microsoft.com/es-es/library/z1z2bkx2%28v=vs.80%29.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-4


Título: Re: Problemilla con Sqlite !!
Publicado por: Novlucker en 21 Diciembre 2012, 01:46 am
Acabo de probar en C# y no tengo problemas :-\
Código
  1. using System;
  2. using System.Data;
  3. using System.Data.SQLite;
  4. using System.Windows.Forms;
  5.  
  6. namespace SqliteSharp
  7. {
  8.    public partial class Form1 : Form
  9.    {
  10.        SQLiteDataAdapter adapter;
  11.        DataTable table;
  12.  
  13.        public Form1()
  14.        {
  15.            InitializeComponent();
  16.        }
  17.  
  18.        private void Form1_Load(object sender, EventArgs e)
  19.        {
  20.            SQLiteConnection connection = new SQLiteConnection("Data Source=SqliteSharp.sqlite");
  21.            adapter = new SQLiteDataAdapter("select * from Usuarios", connection);
  22.            SQLiteCommandBuilder command = new SQLiteCommandBuilder(adapter);
  23.  
  24.            table = new DataTable();
  25.  
  26.            connection.Open();
  27.            adapter.Fill(table);
  28.  
  29.            dataGridView1.DataSource = table;
  30.        }
  31.  
  32.        private void button1_Click(object sender, EventArgs e)
  33.        {
  34.            adapter.Update(table);
  35.        }
  36.    }
  37. }
  38.  

... como verás solamente es un form en el cual en el Load cargo una grilla, y luego tiene un botón que guarda los cambios en la base de datos.

Saludos


Título: Re: Problemilla con Sqlite !!
Publicado por: TrashAmbishion en 21 Diciembre 2012, 17:01 pm
Lo que me queda por soltar el VB .NET y pasarme para Csharp es nada..

Lo hice tal cual y mira lo que dice, ando Googleando a ver que sale

Código:
Dynamic SQL generation for the UpdateCommand is not supported agains a SelectCommand that does nor return any key column information


Y encontre que tengo que ponerle una llave primaria, echo esto ahora me da otro error:

Código:
Concurrency violation: the UpdateCommand affected 0 of the expected 1 records

O sea que no hizo nada sigo Googleando para ver


Título: Re: Problemilla con Sqlite !!
Publicado por: Novlucker en 21 Diciembre 2012, 17:05 pm
¿Tu tabla tiene una PK? Con eso debería de ser suficiente :D

Saludos


Título: Re: Problemilla con Sqlite !!
Publicado por: Novlucker en 21 Diciembre 2012, 17:24 pm
Y encontre que tengo que ponerle una llave primaria, echo esto ahora me da otro error:

Código:
Concurrency violation: the UpdateCommand affected 0 of the expected 1 records

Tu problema ahora es que tienes valores no nullables a los cuales no les estas asignando nada :P


Título: Re: Problemilla con Sqlite !!
Publicado por: TrashAmbishion en 21 Diciembre 2012, 17:33 pm
Tu problema ahora es que tienes valores no nullables a los cuales no les estas asignando nada :P

Increible bueno pues si y no....

Lo que sucede es que tengo un campo de tipo Fecha que al parecer no le estoy pasando el formato de fecha correcto y me esta dando esa violacion, pq todos los tengo puesto como NULL jajajajaja, en cuanto cambie el campo ese por VARCHAR entro que jodia, un millon de gracias sos un barbaro... Dios te bendiga que tengas mucha dicha bro, salu2

Nos vemos orita con mas problemas jajajajaja


Título: Re: Problemilla con Sqlite !!
Publicado por: Novlucker en 21 Diciembre 2012, 17:37 pm
Excelente ;-) Para fortuna de los que preguntan en este subforo, hay programadores en VB.NET y C#, así que el lenguaje no debería de ser problema :P

Saludos