Форум программистов, компьютерный форум, киберфорум
Наши страницы
Basic4Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
FatSlowpoke
0 / 0 / 0
Регистрация: 11.06.2013
Сообщений: 16
#1

Не происходит запись в таблицу SQLite

10.04.2016, 15:55. Просмотров 1293. Ответов 2

Я пытаюсь создать для своего приложения страницу регистрации/авторизации. В базе данных дополнительно создаю таблицу для пользователей. На activity с регистрацией, после нажатия кнопки "Зарегистрироваться" хочу выполнить проверку существует ли пользователь с таким email в базе или нет. И есть нет, то введенные данные должны быть записаны в таблицу. Проверка вроде как происходит, но результат всегда отрицательный, мне кажется, что данные просто не записываются в таблицу. Никак не могу понять почему.

База данных. Проверка введенных данных - Exist
Java
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
public class DB {
//название и версия БД
private static final String DB_NAME = "mydb";
private static final int DB_VERSION = 1;
 
//столбцы для таблицы событий и создание таблицы
private static final String DB_TABLE_EVENTS = "mytab";
public static final String EVENTS_COLUMN_ID = "_id";
public static final String EVENTS_COLUMN_TITLE = "title";
public static final String EVENTS_COLUMN_DATE = "date";
public static final String EVENTS_COLUMN_TIME = "time";
public static final String EVENTS_COLUMN_ADDRESS = "address";
public static final String EVENTS_COLUMN_PHONE = "phone";
public static final String EVENTS_COLUMN_DESCRIPTION = "description";
 
private static final String CREATE_TABLE_EVENTS =
        "create table " + DB_TABLE_EVENTS + "(" +
                EVENTS_COLUMN_ID + " integer primary key autoincrement, " +
                EVENTS_COLUMN_TITLE + " text, " +
                EVENTS_COLUMN_DATE + " text, " +
                EVENTS_COLUMN_TIME + " text, " +
                EVENTS_COLUMN_ADDRESS + " text, " +
                EVENTS_COLUMN_PHONE + " text, " +
                EVENTS_COLUMN_DESCRIPTION + " text" +
                ");";
 
//столбцы для таблицы пользователей и создание таблицы
private static final String DB_TABLE_USERS = "users_tab";
public static final String USERS_COLOMN_ID = "_id";
public static final String USERS_COLOMN_LOGIN = "login";
public static final String USERS_COLOMN_EMAIL = "email";
public static final String USERS_COLOMN_PASSWORD = "pass";
 
private static final String CREATE_TABLE_USERS =
        "create table " + DB_TABLE_USERS + "(" +
                USERS_COLOMN_ID + " integer primary key autoincrement, " +
                USERS_COLOMN_LOGIN + " text, " +
                USERS_COLOMN_EMAIL + " text, " +
                USERS_COLOMN_PASSWORD + " text" +
                ");";
 
//столбцы для таблицы списка и создание таблицы
private static final String DB_TABLE_LIST = "list_tab";
public static final String LIST_COLOMN_ID = "_id";
public static final String USERLIST_COLOMN_ID = "_id_user";
public static final String EVENTLIST_COLOMN_ID = "_id_event";
 
private static final String CREATE_TABLE_LIST =
        "create table " + DB_TABLE_LIST + "(" +
                LIST_COLOMN_ID + " integer primary key autoincrement, " +
                USERLIST_COLOMN_ID + " integer not null ,foreign key ("+USERLIST_COLOMN_ID+") reference "+DB_TABLE_USERS+" ("+USERS_COLOMN_ID+"), " +
                EVENTLIST_COLOMN_ID + " integer not null ,foreign key ("+EVENTLIST_COLOMN_ID+") reference "+DB_TABLE_EVENTS+" ("+EVENTS_COLUMN_ID+")" +
                ");";
 
private final Context mCtx;
private DBHelper mDBHelper;
private SQLiteDatabase mDB;
public DB(Context ctx) {
    mCtx = ctx;
}
 
// открыть подключение
public void open() {
    mDBHelper = new DBHelper(mCtx, DB_NAME, null, DB_VERSION);
    mDB = mDBHelper.getWritableDatabase();
}
 
// закрыть подключение
public void close() {
    if (mDBHelper!=null) mDBHelper.close();
}
 
// получить все данные из таблицы DB_TABLE_EVENTS
public Cursor getAllData() {
    return mDB.query(DB_TABLE_EVENTS, null, null, null, null, null, "_id DESC");
}
 
//получаем объект по id из таблицы DB_TABLE_EVENTS
public Cursor getEventById(long id) {
    return mDB.query("mytab", null, "_id = " + id, null, null, null, "_id DESC");
}
 
//проверяем существует ли пользователь
public String Exist(String user) {
    String username="";
    try {
        Cursor c =  mDB.query(DB_TABLE_USERS, null, USERS_COLOMN_EMAIL + "=?", new String[]{String.valueOf(user)},null, null, null);
 
        if (c == null) {
            return username;
        }
        else {
            c.moveToFirst();
            username = c.getString(c.getColumnIndex(USERS_COLOMN_EMAIL));
        }
    }
 
    catch(Exception e){
        e.printStackTrace();
    }
 
    return username;
}
 
// добавить запись в DB_TABLE_EVENTS
public void addRecEvent(String tit, String dat, String tim, String adr, String phn, String dsc) {
    ContentValues cv = new ContentValues();
    cv.put(EVENTS_COLUMN_TITLE, tit);
    cv.put(EVENTS_COLUMN_DATE, dat);
    cv.put(EVENTS_COLUMN_TIME, tim);
    cv.put(EVENTS_COLUMN_ADDRESS, adr);
    cv.put(EVENTS_COLUMN_PHONE, phn);
    cv.put(EVENTS_COLUMN_DESCRIPTION, dsc);
    mDB.insert(DB_TABLE_EVENTS, null, cv);
}
 
// добавить запись в DB_TABLE_USERS
public void addRecUsers(String login, String email, String pass) {
    ContentValues cv2 = new ContentValues();
    cv2.put(USERS_COLOMN_EMAIL, email);
    cv2.put(USERS_COLOMN_LOGIN, login);
    cv2.put(USERS_COLOMN_PASSWORD, pass);
    mDB.insert(DB_TABLE_USERS, null, cv2);
}
 
// удалить запись из DB_TABLE_EVENTS
public void delRec(long id) {
    mDB.delete(DB_TABLE_EVENTS, EVENTS_COLUMN_ID + "=" + id, null);
}
 
// класс по созданию и управлению БД
private class DBHelper extends SQLiteOpenHelper {
 
    public DBHelper(Context context, String name, CursorFactory factory,
                    int version) {
        super(context, name, factory, version);
    }
 
    // создаем и заполняем БД
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREATE_TABLE_EVENTS);
        db.execSQL(CREATE_TABLE_USERS);
 
        ContentValues cv = new ContentValues();
        for (int i = 1; i < 2; i++) {
            cv.put(EVENTS_COLUMN_TITLE, "Увлекательное событие");
            cv.put(EVENTS_COLUMN_DATE, "Каждый день");
            cv.put(EVENTS_COLUMN_TIME, "каждый час");
            cv.put(EVENTS_COLUMN_ADDRESS, "где-то");
            cv.put(EVENTS_COLUMN_PHONE, "спросите у нас.");
            cv.put(EVENTS_COLUMN_DESCRIPTION, "происходит что-то интересное. Не пропустите самые интересные события вашего города!");
            db.insert(DB_TABLE_EVENTS, null, cv);
        }
 
        ContentValues cv2 = new ContentValues();
        for (int i = 1; i < 2; i++) {
            cv2.put(USERS_COLOMN_LOGIN, "superuser");
            cv2.put(USERS_COLOMN_EMAIL, "dasha");
            cv2.put(USERS_COLOMN_PASSWORD, "12345");
            db.insert(DB_TABLE_USERS, null, cv2);
        }
    }
 
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    }
}
Activity, где происходит регистрация:
Java
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
public class RegisterActivity extends Activity implements View.OnClickListener {
 
EditText etRegEmail, etRegLogin, etRegPassword;
Button btnRegister, btnLoginLink;
TextView tvSiteLink;
DB db;
 
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.register);
 
    etRegEmail = (EditText) findViewById(R.id.etRegEmail);
    etRegLogin = (EditText) findViewById(R.id.etRegLogin);
    etRegPassword = (EditText) findViewById(R.id.etRegPassword);
    btnRegister = (Button) findViewById(R.id.btnRegister23);
    btnLoginLink = (Button) findViewById(R.id.btnLoginLink);
    tvSiteLink = (TextView) findViewById(R.id.tvSiteLink);
 
    btnRegister.setOnClickListener(this);
    btnLoginLink.setOnClickListener(this);
 
    // открываем подключение к БД
    db = new DB(this);
    db.open();
}
 
@Override
public void onClick(View v) {
    switch(v.getId()){
        case R.id.btnRegister23:
            String email = (etRegEmail.getText().toString());
            String login = (etRegLogin.getText().toString());
            String pass = (etRegPassword.getText().toString());
            String storedUser = db.Exist(email);
            if (email.equals(storedUser)) {
                Toast.makeText(this, "Вы уже зарегистрированы. Пожалуйста, авторизируйтесь.", Toast.LENGTH_SHORT).show();
            }
            else db.addRecUsers(email, login, pass);
            break;
        case R.id.btnLoginLink:
            startActivity(new Intent(this, LoginActivity.class));
            break;
    }
}

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2016, 15:55
Ответы с готовыми решениями:

Не происходит BackUp DataBase SQLite
При попытке BackUp-ировать базу даных это не происходит ошибок не выдает просто...

Как лучше записать json объект в таблицу БД Sqlite
Всем привет, в json'е приходит массив объектов, все разные. Как лучше и...

Выбрать запись по позиции SQLite
Доброго времени суток всем . Давно уже пытаюсь решить проблему с SQLite - нужно...

Запись данных в 2 таблицы SQLite
Как заполнять данные в базу данных при двух таблицах? Получается лишь в одну...

Чтение и запись данных в локальную БД SQLite
Есть вот такой класс для работы локальной работы с БД. package...

2
Pro_grammer
Модератор
6139 / 2217 / 438
Регистрация: 24.04.2011
Сообщений: 3,897
Записей в блоге: 10
10.04.2016, 20:28 #2
FatSlowpoke, Это форум о программировании на языке Basic4Android.
Ваш код на Java(TM) 2 Platform Standard Edition 5.0 тут не к месту!
0
FatSlowpoke
0 / 0 / 0
Регистрация: 11.06.2013
Сообщений: 16
10.04.2016, 22:29  [ТС] #3
Pro_grammer, Упс, нечаянно вышло. Вы не могли бы перенести тему в нужный раздел?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2016, 22:29

Как отобразить запись из базы sqlite
Имеется база, 1 активити и пару виджетов для добавления записей в базу sqlite. ...

Как установить курсор на запись с введенным ID в SQLite
Добрый день, имеется таблица с записями в sqlite. В Активити я должен вывести...

Не происходит запись в созданную таблицу SQLite
Здравствуйте! Сильно не ругайте, только начал осваивать C#... сейчас осваиваю...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru