以下是我的数据库的代码。在手机上运行时,不会显示错误,但会显示插入失败。
我的Register_Page.java如下:
import android.content.DialogInterface;
import android.os.Bundle;
import android.app.Activity;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
public class Register_Page extends AppCompatActivity {
EditText Name, Pass , Email, Gender,Phone,Dob,City;
no.nordicsemi.android.nrftoolbox.myDbAdapter helper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register__page);
Name= (EditText) findViewById(R.id.editText_name);
Pass= (EditText) findViewById(R.id.editText_pass);
Email= (EditText) findViewById(R.id.editText_email);
Gender= (EditText) findViewById(R.id.editText_gender);
Phone = (EditText) findViewById(R.id.editText_phone);
Dob=(EditText)findViewById(R.id.editText_dob);
City=(EditText)findViewById(R.id.editText_city);
helper = new no.nordicsemi.android.nrftoolbox.myDbAdapter(this);
}
public void addUser(View view)
{
String t1 = Name.getText().toString();
String t2 = Email.getText().toString();
String t3 = Pass.getText().toString();
String t4 = Gender.getText().toString();
String t5 = Phone.getText().toString();
String t6 = Dob.getText().toString();
String t7 = City.getText().toString();
if(t1.isEmpty() || t2.isEmpty()|| t3.isEmpty() || t4.isEmpty() || t5.isEmpty() || t6.isEmpty() || t7.isEmpty())
{
no.nordicsemi.android.nrftoolbox.Message.message(getApplicationContext(),"Enter Both Name and Password");
}
else
{
long id = helper.insertData(t1,t2,t3,t4,t5,t6,t7);
if(id<=0)
{
no.nordicsemi.android.nrftoolbox.Message.message(getApplicationContext(),"Insertion Unsuccessful");
} else
{
no.nordicsemi.android.nrftoolbox.Message.message(getApplicationContext(),"Insertion Successful");
}
}
}
public void viewdata(View view)
{
String data = helper.getData();
no.nordicsemi.android.nrftoolbox.Message.message(this,data);
}
}
我的myDBHelper.java如下:
import android.app.Notification;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Message;
public class myDbAdapter {
myDbHelper myhelper;
public myDbAdapter(Context context)
{
myhelper = new myDbHelper(context);
}
public long insertData(String name, String email,String pass,String gender,String phone,String dob,String city)
{
SQLiteDatabase dbb = myhelper.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(myDbHelper.NAME, name);
contentValues.put(myDbHelper.MyPASSWORD, pass);
contentValues.put(myDbHelper.EMAIlId, email);
contentValues.put(myDbHelper.GENDER, gender);
contentValues.put(myDbHelper.PHONE, phone);
contentValues.put(myDbHelper.DOB, dob);
contentValues.put(myDbHelper.CITY, city);
long id = dbb.insert(myDbHelper.TABLE_NAME, null , contentValues);
return id;
}
public String getData()
{
SQLiteDatabase db = myhelper.getWritableDatabase();
String[] columns = {myDbHelper.UID,myDbHelper.NAME,myDbHelper.MyPASSWORD};
Cursor cursor =db.query(myDbHelper.TABLE_NAME,columns,null,null,null,null,null);
StringBuffer buffer= new StringBuffer();
while (cursor.moveToNext())
{
int cid =cursor.getInt(cursor.getColumnIndex(myDbHelper.UID));
String name =cursor.getString(cursor.getColumnIndex(myDbHelper.NAME));
String password =cursor.getString(cursor.getColumnIndex(myDbHelper.MyPASSWORD));
buffer.append(cid+ " " + name + " " + password +" \n");
}
return buffer.toString();
}
public int delete(String uname)
{
SQLiteDatabase db = myhelper.getWritableDatabase();
int count=db.delete(myDbHelper.TABLE_NAME ,myDbHelper.NAME +" =? " ,new String[] {uname});
return count;
}
public int updateName(String oldName , String newName)
{
SQLiteDatabase db = myhelper.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(myDbHelper.NAME,newName);
String[] whereArgs= {oldName};
int count=db.update(myDbHelper.TABLE_NAME,contentValues, myDbHelper.NAME + "= ?",whereArgs );
return count;
}
static class myDbHelper extends SQLiteOpenHelper
{
private static final String DATABASE_NAME = "myDatabase"; // Database Name
private static final String TABLE_NAME = "myTable"; // Table Name
private static final int DATABASE_Version = 1; // Database Version
private static final String UID="_id"; // Column I (Primary Key)
private static final String NAME = "Name"; //Column II
private static final String MyPASSWORD= "Password";// Column III
private static final String EMAIlId= "Email-Id";
private static final String GENDER= "Gender";
private static final String PHONE= "Phone no.";
private static final String DOB= "Date-Of-Birth";
private static final String CITY= "City";
private static final String CREATE_TABLE = "CREATE TABLE "+TABLE_NAME+
" ("+UID+" INTEGER PRIMARY KEY AUTOINCREMENT, "+
" NAME TEXT NOT NULL,"+
" EMAILId TEXT NOT NULL,"+
" MyPASSWORD TEXT NOT NULL," +
" GENDER TEXT NOT NULL,"+
" PHONE INTEGER,"+
" DOB INTEGER,"+
" CITY TEXT NOT NULL)";
private static final String DROP_TABLE ="DROP TABLE IF EXISTS "+TABLE_NAME;
private Context context;
public myDbHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_Version);
this.context=context;
}
public void onCreate(SQLiteDatabase db) {
try {
db.execSQL(CREATE_TABLE);
} catch (Exception e) {
no.nordicsemi.android.nrftoolbox.Message.message(context,""+e);
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
try {
no.nordicsemi.android.nrftoolbox.Message.message(context,"OnUpgrade");
db.execSQL(DROP_TABLE);
onCreate(db);
}catch (Exception e) {
no.nordicsemi.android.nrftoolbox.Message.message(context,""+e);
}
}
}
}
我的activity_register_page.xml如下:
<RelativeLayout
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff"
android:orientation="vertical"
android:weightSum="1">
<TextView
android:id="@+id/register"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignEnd="@+id/editText_name"
android:layout_alignParentTop="true"
android:layout_marginLeft="100dp"
android:layout_marginTop="28dp"
android:layout_weight="0.36"
android:text="Register Here"
android:textAlignment="center"
android:textAllCaps="true"
android:textColor="#3333ff"
android:textSize="28dp" />
<TextView
android:id="@+id/textView_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="14sp"
android:layout_marginTop="70sp"
android:autoText="false"
android:text="Name :"
android:textColor="#3368ff"
android:textColorLink="#000000"
android:textSize="20sp" />
<EditText
android:id="@+id/editText_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10sp"
android:layout_marginRight="10sp"
android:layout_marginTop="100sp"
android:ems="10"
android:hint="Enter your name"
android:inputType="textPersonName" />
<TextView
android:id="@+id/textView_email"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="14sp"
android:layout_marginTop="160sp"
android:text="Email-id :"
android:textColor="#3368ff"
android:textColorLink="#000000"
android:textSize="20sp" />
<EditText
android:id="@+id/editText_email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10sp"
android:layout_marginRight="10sp"
android:layout_marginTop="190sp"
android:ems="10"
android:hint="Enter Email-id"
android:inputType="textEmailAddress" />
<TextView
android:id="@+id/textView_pass"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="14dp"
android:layout_marginTop="250dp"
android:hint="Enter Password"
android:text="Password"
android:textColor="#3368ff"
android:textSize="20sp" />
<EditText
android:id="@+id/editText_pass"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="280dp"
android:ems="10"
android:hint="Enter Password"
android:inputType="textPassword" />
<TextView
android:id="@+id/textView_dob"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="14sp"
android:layout_marginTop="450sp"
android:text="Date of Birth :"
android:textColor="#3368ff"
android:textColorLink="#000000"
android:textSize="20sp" />
<EditText
android:id="@+id/editText_dob"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="480dp"
android:ems="10"
android:hint="Date of Birth"
android:inputType="date" />
<TextView
android:id="@+id/textView_phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="14sp"
android:layout_marginTop="540sp"
android:text="Phone No. :"
android:textColor="#3368ff"
android:textColorLink="#000000"
android:textSize="20sp" />
<EditText
android:id="@+id/editText_phone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10sp"
android:layout_marginRight="10sp"
android:layout_marginTop="570sp"
android:ems="10"
android:hint="Enter Phone No."
android:inputType="phone" />
<TextView
android:id="@+id/textView_city"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="14sp"
android:layout_marginTop="630sp"
android:text="City :"
android:textColor="#3368ff"
android:textColorLink="#000000"
android:textSize="20sp" />
<EditText
android:id="@+id/editText_city"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10sp"
android:layout_marginRight="10sp"
android:layout_marginTop="660sp"
android:ems="10"
android:hint="Enter your City"
android:inputType="textPersonName" />
<TextView
android:id="@+id/textView_gender"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="14sp"
android:layout_marginTop="340sp"
android:text="Gender :"
android:textColor="#3368ff"
android:textColorLink="#000000"
android:textSize="20sp" />
<EditText
android:id="@+id/editText_gender"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="370dp"
android:ems="10"
android:hint="M/F/Others"
android:inputType="textPersonName" />
<Button
android:id="@+id/button_register"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:layout_marginLeft="110dp"
android:layout_marginTop="720dp"
android:background="#3368ff"
android:onClick="addUser"
android:text="Register"
android:textAlignment="center"
android:textColor="#ffffff" />
</RelativeLayout>
代码有什么问题? 谁能解释并帮助纠正错误?
答案 0 :(得分:0)
尝试将此代码替换为您的代码
if(id == -1)
{
no.nordicsemi.android.nrftoolbox.Message.message(getApplicationContext(),"Insertion Unsuccessful");
} else
{
no.nordicsemi.android.nrftoolbox.Message.message(getApplicationContext(),"Insertion Successful");
}
答案 1 :(得分:0)
在db helper中,您声明了列名的常量字段,并在插入方法中使用它们。在创建db时,您还应该使用这些值而不是硬编码值。
所以改变这个
private static final String CREATE_TABLE = "CREATE TABLE "+TABLE_NAME+
" ("+UID+" INTEGER PRIMARY KEY AUTOINCREMENT, "+
" NAME TEXT NOT NULL,"+
" EMAILId TEXT NOT NULL,"+
" MyPASSWORD TEXT NOT NULL," +
" GENDER TEXT NOT NULL,"+
" PHONE INTEGER,"+
" DOB INTEGER,"+
" CITY TEXT NOT NULL)";
声明的常量字段
private static final String DATABASE_NAME = "myDatabase"; // Database Name
private static final String TABLE_NAME = "myTable"; // Table Name
private static final int DATABASE_Version = 1; // Database Version
private static final String UID="_id"; // Column I (Primary Key)
private static final String NAME = "Name"; //Column II
private static final String MyPASSWORD= "Password";// Column III
private static final String EMAIlId= "Email-Id";
private static final String GENDER= "Gender";
private static final String PHONE= "Phone no.";
private static final String DOB= "Date-Of-Birth";
private static final String CITY= "City";
答案 2 :(得分:0)
首先,您需要在insertData
之前执行调试步骤,并在
cursor.close()
return buffer.toString();