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
¿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
Bueno ando mirando el SQL SERVER CE
Mientras este es el código que uso para cargar la información al DataGrid
Public Function RecogerConsulta(ByVal mySql As String) As DataTable
Dim tmpTable As New DataTable
Try
cnnl = New SQLiteConnection("Data Source=Clientes.s3db")
cnnl.Open()
Ada = New SQLiteDataAdapter(mySql, cnnl)
Ada.Fill(tmpTable)
cnnl.Close()
Catch ex As Exception
Msgbox(ex.Message, "Error")
End Try
Return tmpTable
End Function
Private Sub Form1_Load
datagrid1.DataSource = bd.RecogerConsulta("SELECT * FROM Usuario")
End Sub
Ahora el codigo que da un error de Tipos es el siguiente.
Dim SQLconnect As New System.Data.SQLite.SQLiteConnection
Dim dataSet = New DataSet()
SQLconnect.ConnectionString = "Data Source=Clientes.s3db"
dataSet = dg1.DataSource
SQLconnect.Open()
Dim dataAdapter = New SQLiteDataAdapter("SELECT * FROM Usuario", SQLconnect)
Dim CB As SQLiteCommandBuilder = New SQLiteCommandBuilder(dataAdapter)
dataAdapter.UpdateCommand = CB.GetUpdateCommand()
dataAdapter.InsertCommand = CB.GetInsertCommand()
dataAdapter.DeleteCommand = CB.GetDeleteCommand()
[b]dataAdapter.Update(dataSet, "Usuario")[/b]
bueno amigos help
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
En la MSDN esta este ejemplo que trabaja con el DataAdapter como tu dices pero obtengo una excepcion y supongo que sea cuando hago
'No se pq esto me parece que esta mal
dataset = dg1.datasource
Y este es el ejemplo de la MSDN
Public Function CreateCmdsAndUpdate(ByVal dataSet As DataSet, _
ByVal connectionString As String, ByVal queryString As String) As DataSet
Using connection As New OleDbConnection(connectionString)
Dim adapter As New OleDbDataAdapter()
adapter.SelectCommand = New OleDbCommand(queryString, connection)
Dim builder As OleDbCommandBuilder = New OleDbCommandBuilder(adapter)
connection.Open()
Dim customers As DataSet = New DataSet
adapter.Fill(customers)
' Code to modify data in DataSet here
'Supongo que aqui es donde va la linea que creo esta mal
'que tiene los cambios en memoria. Pero obtengo la excepcion que tambien
'la explican ahi mismo en la pagina
'DBConcurrencyException
dataset = dg1.datasource
adapter.Update(customers)
Return customers
End Using
End Function
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
Acabo de probar en C# y no tengo problemas :-\
using System;
using System.Data;
using System.Data.SQLite;
using System.Windows.Forms;
namespace SqliteSharp
{
public partial class Form1 : Form
{
SQLiteDataAdapter adapter;
DataTable table;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
SQLiteConnection connection = new SQLiteConnection("Data Source=SqliteSharp.sqlite");
adapter = new SQLiteDataAdapter("select * from Usuarios", connection);
SQLiteCommandBuilder command = new SQLiteCommandBuilder(adapter);
table = new DataTable();
connection.Open();
adapter.Fill(table);
dataGridView1.DataSource = table;
}
private void button1_Click(object sender, EventArgs e)
{
adapter.Update(table);
}
}
}
... 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
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
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:
Concurrency violation: the UpdateCommand affected 0 of the expected 1 records
O sea que no hizo nada sigo Googleando para ver
¿Tu tabla tiene una PK? Con eso debería de ser suficiente :D
Saludos
Cita de: TrashAmbishion en 21 Diciembre 2012, 17:01 PM
Y encontre que tengo que ponerle una llave primaria, echo esto ahora me da otro error:
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
Cita de: Novlucker en 21 Diciembre 2012, 17:24 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
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