当我使用命令在 Android Studio 中的另一个 class 中更新数据库时,为什么我的数据库没有在 class 中更新?
Why isn't my database updating in a class when I use the command to update it in a another class in Android Studio?
我认为我的 SQL 查询有效,但我的 table 的数据没有更新。这是为什么?
我的数据库中有一个名为 MasterStudents 的 table,列名称为 StudentID INTEGER NOT NULL UNIQUE,FirstName VARCHAR,LastName VARCHAR,ContactNumber VARCHAR , 电子邮件地址 VARCHAR
我有两个 classes,StudentsMasterList.java - 制作一个 Table 布局,使用 [=48] 在数据库中显示数据=] Row & StudentsFormUpdate.java 检索所选Table行的数据并显示在EditText/s.
我在 StudentsFormUpdate 中有一个按钮调用函数 UpdateButton() onClick。
这是 StudentsFormUpdate.java class(更新):
public class StudentsFormUpdate extends Activity
{
String FirstName, LastName, EmailAddress, ContactNumber, StudentID;
SQLiteDatabase db;
TextView StudentIDViewUpdate2;
EditText FirstNameUpdate2, LastNameUpdate2, ContactNumberUpdate2, EmailUpdate2;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.students_updateform);
db = openOrCreateDatabase("ClassManager", MODE_WORLD_READABLE, null);
String reciever = getIntent().getStringExtra("sender");
Cursor c = db.rawQuery("SELECT * FROM MasterStudents WHERE StudentID = '" + reciever + "'", null);
TextView StudentIDViewUpdate2 = (TextView)findViewById(R.id.StudentIDViewPermanentUpdate);
EditText FirstNameUpdate2 = (EditText)findViewById(R.id.FirstNameTextUpdate);
EditText LastNameUpdate2 = (EditText)findViewById(R.id.LastNameTextUpdate);
EditText ContactNumberUpdate2 = (EditText)findViewById(R.id.ContactNumberTextUpdate);
EditText EmailUpdate2 = (EditText)findViewById(R.id.EmailAddressTextUpdate);
c.moveToFirst();
StudentIDViewUpdate2.setText(c.getString(c.getColumnIndex("StudentID")));
FirstNameUpdate2.setText(c.getString(c.getColumnIndex("FirstName")));
LastNameUpdate2.setText(c.getString(c.getColumnIndex("LastName")));
ContactNumberUpdate2.setText(c.getString(c.getColumnIndex("ContactNumber")));
EmailUpdate2.setText(c.getString(c.getColumnIndex("EmailAddress")));
}
public void UpdateButton(View view)
{
StudentID = StudentIDViewUpdate2.getText().toString();
FirstName = FirstNameUpdate2.getText().toString();
LastName = LastNameUpdate2.getText().toString();
ContactNumber = ContactNumberUpdate2.getText().toString();
EmailAddress = EmailUpdate2.getText().toString();
db.execSQL("UPDATE MasterStudents SET FirstName = '" + FirstName + "', LastName = '" + LastName + "', ContactNumber = '" + ContactNumber + "', " +
"EmailAddress = '" + EmailAddress + "' WHERE StudentID = " + StudentID + ";");
Toast toast = Toast.makeText(getApplicationContext(), "Student Updated", Toast.LENGTH_SHORT);
toast.show();
finish();
}
}
为什么我的代码不起作用?非常感谢任何帮助!
StudentID 是一个整数,因此更新查询中不需要封装 ""
。
更改您的更新查询
db.execSQL("UPDATE MasterStudents SET FirstName = '" + FirstName + "', LastName = '" + LastName + "', ContactNumber = '" + ContactNumber + "', " +
"EmailAddress = '" + EmailAddress + "' WHERE StudentID = '" + StudentID + "'");
至
db.execSQL("UPDATE MasterStudents SET FirstName = '" + FirstName + "', LastName = '" + LastName + "', ContactNumber = '" + ContactNumber + "', " +
"EmailAddress = '" + EmailAddress + "' WHERE StudentID = " + StudentID +";");
注意:您应该在数据库中将 StudentID
设置为 primary key
。不要只设置 unique
.
此外,在创建 EditText
全局变量后,将此代码从 onCreate
添加到 UpdateButton
。
private TextView StudentIDViewUpdate2;
private EditText FirstNameUpdate2;
private EditText LastNameUpdate2;
private EditText ContactNumberUpdate2;
private EditText EmailUpdate2;
在你的onCreate
StudentIDViewUpdate2 = (TextView)findViewById(R.id.StudentIDViewPermanentUpdate);
FirstNameUpdate2 = (EditText)findViewById(R.id.FirstNameTextUpdate);
LastNameUpdate2 = (EditText)findViewById(R.id.LastNameTextUpdate);
ContactNumberUpdate2 = (EditText)findViewById(R.id.ContactNumberTextUpdate);
EmailUpdate2 = (EditText)findViewById(R.id.EmailAddressTextUpdate);
从 onCreate
到 UpdateButton
StudentID = StudentIDViewUpdate2.getText().toString();
FirstName = FirstNameUpdate2.getText().toString();
LastName = LastNameUpdate2.getText().toString();
ContactNumber = ContactNumberUpdate2.getText().toString();
EmailAddress = EmailUpdate2.getText().toString();
将您的 StudentsFormUpdate
class 替换为以下代码:
public class StudentsFormUpdate extends Activity
{
String FirstName, LastName, EmailAddress, ContactNumber, StudentID;
SQLiteDatabase db;
TextView StudentIDViewUpdate2;
EditText FirstNameUpdate2, LastNameUpdate2, ContactNumberUpdate2, EmailUpdate2;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.students_updateform);
db = openOrCreateDatabase("ClassManager", MODE_WORLD_READABLE, null);
String reciever = getIntent().getStringExtra("sender");
Cursor c = db.rawQuery("SELECT * FROM MasterStudents WHERE StudentID = '" + reciever + "'", null);
StudentIDViewUpdate2 = (TextView)findViewById(R.id.StudentIDViewPermanentUpdate);
FirstNameUpdate2 = (EditText)findViewById(R.id.FirstNameTextUpdate);
LastNameUpdate2 = (EditText)findViewById(R.id.LastNameTextUpdate);
ContactNumberUpdate2 = (EditText)findViewById(R.id.ContactNumberTextUpdate);
EmailUpdate2 = (EditText)findViewById(R.id.EmailAddressTextUpdate);
c.moveToFirst();
StudentIDViewUpdate2.setText(c.getString(c.getColumnIndex("StudentID")));
FirstNameUpdate2.setText(c.getString(c.getColumnIndex("FirstName")));
LastNameUpdate2.setText(c.getString(c.getColumnIndex("LastName")));
ContactNumberUpdate2.setText(c.getString(c.getColumnIndex("ContactNumber")));
EmailUpdate2.setText(c.getString(c.getColumnIndex("EmailAddress")));
}
public void UpdateButton(View view)
{
StudentID = StudentIDViewUpdate2.getText().toString();
FirstName = FirstNameUpdate2.getText().toString();
LastName = LastNameUpdate2.getText().toString();
ContactNumber = ContactNumberUpdate2.getText().toString();
EmailAddress = EmailUpdate2.getText().toString();
db.execSQL("UPDATE MasterStudents SET FirstName = '" + FirstName + "', LastName = '" + LastName + "', ContactNumber = '" + ContactNumber + "', " +
"EmailAddress = '" + EmailAddress + "' WHERE StudentID = " + StudentID + ";");
Toast toast = Toast.makeText(getApplicationContext(), "Student Updated", Toast.LENGTH_SHORT);
toast.show();
finish();
}
}
我认为我的 SQL 查询有效,但我的 table 的数据没有更新。这是为什么?
我的数据库中有一个名为 MasterStudents 的 table,列名称为 StudentID INTEGER NOT NULL UNIQUE,FirstName VARCHAR,LastName VARCHAR,ContactNumber VARCHAR , 电子邮件地址 VARCHAR
我有两个 classes,StudentsMasterList.java - 制作一个 Table 布局,使用 [=48] 在数据库中显示数据=] Row & StudentsFormUpdate.java 检索所选Table行的数据并显示在EditText/s.
我在 StudentsFormUpdate 中有一个按钮调用函数 UpdateButton() onClick。
这是 StudentsFormUpdate.java class(更新):
public class StudentsFormUpdate extends Activity
{
String FirstName, LastName, EmailAddress, ContactNumber, StudentID;
SQLiteDatabase db;
TextView StudentIDViewUpdate2;
EditText FirstNameUpdate2, LastNameUpdate2, ContactNumberUpdate2, EmailUpdate2;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.students_updateform);
db = openOrCreateDatabase("ClassManager", MODE_WORLD_READABLE, null);
String reciever = getIntent().getStringExtra("sender");
Cursor c = db.rawQuery("SELECT * FROM MasterStudents WHERE StudentID = '" + reciever + "'", null);
TextView StudentIDViewUpdate2 = (TextView)findViewById(R.id.StudentIDViewPermanentUpdate);
EditText FirstNameUpdate2 = (EditText)findViewById(R.id.FirstNameTextUpdate);
EditText LastNameUpdate2 = (EditText)findViewById(R.id.LastNameTextUpdate);
EditText ContactNumberUpdate2 = (EditText)findViewById(R.id.ContactNumberTextUpdate);
EditText EmailUpdate2 = (EditText)findViewById(R.id.EmailAddressTextUpdate);
c.moveToFirst();
StudentIDViewUpdate2.setText(c.getString(c.getColumnIndex("StudentID")));
FirstNameUpdate2.setText(c.getString(c.getColumnIndex("FirstName")));
LastNameUpdate2.setText(c.getString(c.getColumnIndex("LastName")));
ContactNumberUpdate2.setText(c.getString(c.getColumnIndex("ContactNumber")));
EmailUpdate2.setText(c.getString(c.getColumnIndex("EmailAddress")));
}
public void UpdateButton(View view)
{
StudentID = StudentIDViewUpdate2.getText().toString();
FirstName = FirstNameUpdate2.getText().toString();
LastName = LastNameUpdate2.getText().toString();
ContactNumber = ContactNumberUpdate2.getText().toString();
EmailAddress = EmailUpdate2.getText().toString();
db.execSQL("UPDATE MasterStudents SET FirstName = '" + FirstName + "', LastName = '" + LastName + "', ContactNumber = '" + ContactNumber + "', " +
"EmailAddress = '" + EmailAddress + "' WHERE StudentID = " + StudentID + ";");
Toast toast = Toast.makeText(getApplicationContext(), "Student Updated", Toast.LENGTH_SHORT);
toast.show();
finish();
}
}
为什么我的代码不起作用?非常感谢任何帮助!
StudentID 是一个整数,因此更新查询中不需要封装 ""
。
更改您的更新查询
db.execSQL("UPDATE MasterStudents SET FirstName = '" + FirstName + "', LastName = '" + LastName + "', ContactNumber = '" + ContactNumber + "', " +
"EmailAddress = '" + EmailAddress + "' WHERE StudentID = '" + StudentID + "'");
至
db.execSQL("UPDATE MasterStudents SET FirstName = '" + FirstName + "', LastName = '" + LastName + "', ContactNumber = '" + ContactNumber + "', " +
"EmailAddress = '" + EmailAddress + "' WHERE StudentID = " + StudentID +";");
注意:您应该在数据库中将 StudentID
设置为 primary key
。不要只设置 unique
.
此外,在创建 EditText
全局变量后,将此代码从 onCreate
添加到 UpdateButton
。
private TextView StudentIDViewUpdate2;
private EditText FirstNameUpdate2;
private EditText LastNameUpdate2;
private EditText ContactNumberUpdate2;
private EditText EmailUpdate2;
在你的onCreate
StudentIDViewUpdate2 = (TextView)findViewById(R.id.StudentIDViewPermanentUpdate);
FirstNameUpdate2 = (EditText)findViewById(R.id.FirstNameTextUpdate);
LastNameUpdate2 = (EditText)findViewById(R.id.LastNameTextUpdate);
ContactNumberUpdate2 = (EditText)findViewById(R.id.ContactNumberTextUpdate);
EmailUpdate2 = (EditText)findViewById(R.id.EmailAddressTextUpdate);
从 onCreate
到 UpdateButton
StudentID = StudentIDViewUpdate2.getText().toString();
FirstName = FirstNameUpdate2.getText().toString();
LastName = LastNameUpdate2.getText().toString();
ContactNumber = ContactNumberUpdate2.getText().toString();
EmailAddress = EmailUpdate2.getText().toString();
将您的 StudentsFormUpdate
class 替换为以下代码:
public class StudentsFormUpdate extends Activity
{
String FirstName, LastName, EmailAddress, ContactNumber, StudentID;
SQLiteDatabase db;
TextView StudentIDViewUpdate2;
EditText FirstNameUpdate2, LastNameUpdate2, ContactNumberUpdate2, EmailUpdate2;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.students_updateform);
db = openOrCreateDatabase("ClassManager", MODE_WORLD_READABLE, null);
String reciever = getIntent().getStringExtra("sender");
Cursor c = db.rawQuery("SELECT * FROM MasterStudents WHERE StudentID = '" + reciever + "'", null);
StudentIDViewUpdate2 = (TextView)findViewById(R.id.StudentIDViewPermanentUpdate);
FirstNameUpdate2 = (EditText)findViewById(R.id.FirstNameTextUpdate);
LastNameUpdate2 = (EditText)findViewById(R.id.LastNameTextUpdate);
ContactNumberUpdate2 = (EditText)findViewById(R.id.ContactNumberTextUpdate);
EmailUpdate2 = (EditText)findViewById(R.id.EmailAddressTextUpdate);
c.moveToFirst();
StudentIDViewUpdate2.setText(c.getString(c.getColumnIndex("StudentID")));
FirstNameUpdate2.setText(c.getString(c.getColumnIndex("FirstName")));
LastNameUpdate2.setText(c.getString(c.getColumnIndex("LastName")));
ContactNumberUpdate2.setText(c.getString(c.getColumnIndex("ContactNumber")));
EmailUpdate2.setText(c.getString(c.getColumnIndex("EmailAddress")));
}
public void UpdateButton(View view)
{
StudentID = StudentIDViewUpdate2.getText().toString();
FirstName = FirstNameUpdate2.getText().toString();
LastName = LastNameUpdate2.getText().toString();
ContactNumber = ContactNumberUpdate2.getText().toString();
EmailAddress = EmailUpdate2.getText().toString();
db.execSQL("UPDATE MasterStudents SET FirstName = '" + FirstName + "', LastName = '" + LastName + "', ContactNumber = '" + ContactNumber + "', " +
"EmailAddress = '" + EmailAddress + "' WHERE StudentID = " + StudentID + ";");
Toast toast = Toast.makeText(getApplicationContext(), "Student Updated", Toast.LENGTH_SHORT);
toast.show();
finish();
}
}