>
Este é o erro que acontece quando clico em CADASTRAR (layout cadastrar clientes), lembrando que da o mesmo erro no meu programa implementado e no programa implementado pelo professor, os dois da o mesmo erro...
A mensagem "Erro ao cadastrar cliente" aparece, o programa não cai, continua funcionando.
Eu tentei mudar nome do banco de dados, mas não consegui.
É preciso criar a tabela pelo cmd? O java não cria quando colocamo "CREATE TABLE IF NOT EXISTS"?
05-17 12:48:20.330: E/SQLiteDatabase(9502): Error inserting nome=rafael email=gshdjs
05-17 12:48:20.330: E/SQLiteDatabase(9502): android.database.sqlite.SQLiteException: no such table: clientes2 (code 1): , while compiling: INSERT INTO clientes2(nome,email) VALUES (?,?)
05-17 12:48:20.330: E/SQLiteDatabase(9502): at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
05-17 12:48:20.330: E/SQLiteDatabase(9502): at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1012)
05-17 12:48:20.330: E/SQLiteDatabase(9502): at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:623)
05-17 12:48:20.330: E/SQLiteDatabase(9502): at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
05-17 12:48:20.330: E/SQLiteDatabase(9502): at android.database.sqlite.SQLiteProgram.
05-17 12:48:20.330: E/SQLiteDatabase(9502): at android.database.sqlite.SQLiteStatement.
05-17 12:48:20.330: E/SQLiteDatabase(9502): at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1467)
05-17 12:48:20.330: E/SQLiteDatabase(9502): at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1339)
05-17 12:48:20.330: E/SQLiteDatabase(9502): at silva.fernandes.rafael.cadastro.clientes.Inserir.CadastrarClick(Inserir.java:38)
05-17 12:48:20.330: E/SQLiteDatabase(9502): at java.lang.reflect.Method.invokeNative(Native Method)
05-17 12:48:20.330: E/SQLiteDatabase(9502): at java.lang.reflect.Method.invoke(Method.java:511)
05-17 12:48:20.330: E/SQLiteDatabase(9502): at android.view.View$1.onClick(View.java:3686)
05-17 12:48:20.330: E/SQLiteDatabase(9502): at android.view.View.performClick(View.java:4211)
05-17 12:48:20.330: E/SQLiteDatabase(9502): at android.view.View$PerformClick.run(View.java:17267)
05-17 12:48:20.330: E/SQLiteDatabase(9502): at android.os.Handler.handleCallback(Handler.java:615)
05-17 12:48:20.330: E/SQLiteDatabase(9502): at android.os.Handler.dispatchMessage(Handler.java:92)
05-17 12:48:20.330: E/SQLiteDatabase(9502): at android.os.Looper.loop(Looper.java:137)
05-17 12:48:20.330: E/SQLiteDatabase(9502): at android.app.ActivityThread.main(ActivityThread.java:4898)
05-17 12:48:20.330: E/SQLiteDatabase(9502): at java.lang.reflect.Method.invokeNative(Native Method)
05-17 12:48:20.330: E/SQLiteDatabase(9502): at java.lang.reflect.Method.invoke(Method.java:511)
05-17 12:48:20.330: E/SQLiteDatabase(9502): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
05-17 12:48:20.330: E/SQLiteDatabase(9502): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
05-17 12:48:20.330: E/SQLiteDatabase(9502): at dalvik.system.NativeStart.main(Native Method)
Será que alguem pode me ajudar?
Rafael,
Precisamos do código que cria o banco de dados.
Pode nos mostrar?
JAVA]
package silva.fernandes.rafael.cadastro.clientes;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.view.Menu;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
public class ListarActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listar_activity);
SQLiteDatabase db = openOrCreateDatabase("clientes2.db", Context.MODE_PRIVATE, null);
// Tabela de clientes
StringBuilder sqlClientes = new StringBuilder();
sqlClientes.append("CREATE TABLE IF NOT EXISTS clientes2 (");
sqlClientes.append("_id INTEGER PRIMARY KEY, ");
sqlClientes.append("nome VARCHAR(30), ");
sqlClientes.append("email VARCHAR(30));");
db.execSQL(sqlClientes.toString());
Cursor cursor = db.rawQuery("SELECT * FROM clientes", null);
String[] from = {"_id", "nome"};
int[] to = {R.id.txvID, R.id.txvNome};
android.widget.SimpleCursorAdapter ad = new android.widget.SimpleCursorAdapter(getBaseContext(),
R.layout.listar_model, cursor, from, to);
ListView ltwDados = (ListView)findViewById(R.id.ltwDados);
ltwDados.setAdapter(ad);
db.close();
}
}
package silva.fernandes.rafael.cadastro.clientes;
import android.os.Bundle;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class Inserir extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.inserir);
}
public void CadastrarClick(View v){
EditText txtNome = (EditText)findViewById(R.id.txtNome);
EditText txtEmail = (EditText)findViewById(R.id.txtEmail);
if(txtNome.getText().toString().length() <= 0){
txtNome.setError("Preencha o campo nome.");
txtNome.requestFocus();
} else if(txtEmail.getText().toString().length() <= 0){
txtEmail.setError("Preencha o campo e-mail.");
txtEmail.requestFocus();
} else {
try{
SQLiteDatabase db = openOrCreateDatabase("clientes2.db", Context.MODE_PRIVATE, null);
ContentValues ctv = new ContentValues();
ctv.put("nome", txtNome.getText().toString());
ctv.put("email", txtEmail.getText().toString());
if(db.insert("clientes2", "_id", ctv) > 0){
Toast.makeText(getBaseContext(), "Sucesso ao cadastrar o cliente.", Toast.LENGTH_SHORT).show();
finish();
} else {
Toast.makeText(getBaseContext(), "Erro ao cadastrar o cliente.", Toast.LENGTH_SHORT).show();
}
} catch(Exception ex){
Toast.makeText(getBaseContext(), ex.getMessage(), Toast.LENGTH_SHORT).show();
}
}
}
}
package silva.fernandes.rafael.cadastro.clientes;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.view.Menu;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
public class ListarActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listar_activity);
SQLiteDatabase db = openOrCreateDatabase("clientes2.db", Context.MODE_PRIVATE, null);
// Tabela de clientes
StringBuilder sqlClientes = new StringBuilder();
sqlClientes.append("CREATE TABLE IF NOT EXISTS clientes2 (");
sqlClientes.append("_id INTEGER PRIMARY KEY, ");
sqlClientes.append("nome VARCHAR(30), ");
sqlClientes.append("email VARCHAR(30));");
db.execSQL(sqlClientes.toString());
Cursor cursor = db.rawQuery("SELECT * FROM clientes", null);
String[] from = {"_id", "nome"};
int[] to = {R.id.txvID, R.id.txvNome};
android.widget.SimpleCursorAdapter ad = new android.widget.SimpleCursorAdapter(getBaseContext(),
R.layout.listar_model, cursor, from, to);
ListView ltwDados = (ListView)findViewById(R.id.ltwDados);
ltwDados.setAdapter(ad);
db.close();
}
}
Olá
Você ta criando a tabela clientes2, mas fica dando select na tabela clientes.
É preciso alterar isso.