Problemas con un CRUD en Visual C# con SQLite.
Publicado por ESC (2 intervenciones) el 04/10/2020 14:41:00
Hola a todos, tengo un problemita con un CRUD que estoy haciendo en Visual C#
resulta que cuando hago doble click en el DataGrid me sale este error.
Uso como motor para mi base de datos SQLite.
"Información adicional: El índice estaba fuera del intervalo. Debe ser un valor no negativo e inferior al tamaño de la colección"
Tambien me un error aparece cuando voy a Modificar/Actualizar un registro que es el siguiente:
"Información adicional: SQL logic error or missing database
near "3": syntax error"
Mi database funciona correctamente porque me permite guardar y borrar registros, bueno eso creo...
Actualmente mi código es este:
y la tabla que uso en SQLite es la siguiente:
Aqui algunas imagenes del error que me sale:

Aveces tambien me sale este error.

Tambien aveces al compilarlo con solo dar un click al DataGrid para reflejar los datos en los textobox
me da error :(
Esta es la interfaz del Form

Agradeceria su ayuda colegas, soy nuevo en C#, vengo de Visual Basic que es muy diferente de C# por cierto...
resulta que cuando hago doble click en el DataGrid me sale este error.
Uso como motor para mi base de datos SQLite.
"Información adicional: El índice estaba fuera del intervalo. Debe ser un valor no negativo e inferior al tamaño de la colección"
Tambien me un error aparece cuando voy a Modificar/Actualizar un registro que es el siguiente:
"Información adicional: SQL logic error or missing database
near "3": syntax error"
Mi database funciona correctamente porque me permite guardar y borrar registros, bueno eso creo...
Actualmente mi código es este:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
namespace CRUD_SQLite
{
public partial class frm_inicio : Form
{
public frm_inicio()
{
InitializeComponent();
}
// Definimos las variables que moveran las base de datos de SQlite.
private SQLiteConnection sql_con;
private SQLiteCommand sql_cmd;
private SQLiteDataAdapter da;
private DataSet ds = new DataSet();
private DataTable dt = new DataTable();
void set_connection() // Establecemos la conexion a la base de datos local.
{
sql_con = new SQLiteConnection ("data source=contactos.db"); // El archivo .db debe estar ubicado en la carpeta Debug.
}
void execute_query(string text_query)
{
set_connection();
sql_con.Open(); // Abrimos la conexion.
sql_cmd = sql_con.CreateCommand(); // Creamos los comandos.
sql_cmd.CommandText = text_query; // Como comandos elegimos a text_query que los almacenara.
sql_cmd.ExecuteNonQuery(); // Ejecutamos la consulta.
sql_con.Close(); // Cerramos los comandos.
}
void load_db()
{
set_connection();
sql_con.Open(); // Abrimos los comandos para SQLite.
sql_cmd = sql_con.CreateCommand(); // Creamos el comando
string command_text = "select * from contactos"; // El comando debe ser una variable tipo string, despues del *from colocamos el nombre de la tabla a utilizar.
da = new SQLiteDataAdapter(command_text, sql_con); // Creamos un DataAdapter para el DataGrid.
ds.Reset();
da.Fill(ds);
dt = ds.Tables[0];
dgv_datos.DataSource = dt; // Colocamos el nombre de nuestra DataGrd y como data source le colocamos el que hicimos.
sql_con.Close();
}
private void frm_inicio_Load(object sender, EventArgs e)
{
load_db(); // Cargamos en el Form los datos.
}
private void btn_guardar_Click(object sender, EventArgs e)
{
string text_query = "insert into contactos(ID,Nombres,Apellidos,Telefono,Correo)values('" + txt_id.Text + "','" + txt_nombres.Text + "','" + txt_apellidos.Text + "','" + txt_telefono.Text + "','" + txt_correo.Text + "')";
execute_query(text_query);
load_db();
}
private void btn_eliminar_Click(object sender, EventArgs e)
{
string text_query = "delete from contactos where ID='" + txt_id.Text + "'";
execute_query(text_query);
load_db();
}
private void btn_editar_Click(object sender, EventArgs e)
{
string text_query = "update clientes set Nombres ='" + txt_nombres.Text + "', Apellidos ='" + txt_apellidos.Text + "', Telefono ='" + txt_telefono.Text + "', Correo ='" + txt_correo.Text + "''where ID='" + txt_id.Text + "'";
execute_query(text_query);
load_db();
}
private void dgv_datos_CellClick(object sender, DataGridViewCellEventArgs e)
{
txt_id.Text = dgv_datos.SelectedRows[0].Cells[0].Value.ToString();
txt_nombres.Text = dgv_datos.SelectedRows[0].Cells[1].Value.ToString();
txt_apellidos.Text = dgv_datos.SelectedRows[0].Cells[2].Value.ToString();
txt_telefono.Text = dgv_datos.SelectedRows[0].Cells[3].Value.ToString();
txt_correo.Text = dgv_datos.SelectedRows[0].Cells[4].Value.ToString();
}
}
}
y la tabla que uso en SQLite es la siguiente:
1
2
3
4
5
6
7
CREATE TABLE "contactos" (
"ID" INTEGER UNIQUE,
"Nombres" TEXT,
"Apellidos" TEXT,
"Telefono" NUMERIC,
"Correo" TEXT,
PRIMARY KEY("ID")
Aqui algunas imagenes del error que me sale:

Aveces tambien me sale este error.

Tambien aveces al compilarlo con solo dar un click al DataGrid para reflejar los datos en los textobox
me da error :(
Esta es la interfaz del Form

Agradeceria su ayuda colegas, soy nuevo en C#, vengo de Visual Basic que es muy diferente de C# por cierto...
Valora esta pregunta


0