Если это была проблема с пространством имен, есть возможность попытаться изменить две вещи в файле xslt:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:my="http://www.w3.org/2001/XMLSchema">
<xsl:template match="/" >
<soap:Envelope xsl:version="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<NewRoot xmlns="http://wherever.com">
<NewChild>
<ChildID>ABCD</ChildID>
<ChildData>
<xsl:value-of select="/my:MyRoot/my:MyChild1/my:MyData"/>
</ChildData>
</NewChild>
</NewRoot>
</soap:Body>
</soap:Envelope>
</xsl:template>
</xsl:stylesheet>
db.delete (TABLE_NAME, null, null); правильный синтаксис для удаления всех строк в таблице. Но я думаю, что вы дали бы имя таблицы напрямую, не заключая его в двойные кавычки. Попробуйте вот так
db.delete("TABLE_NAME", null, null);
Это может помочь:)
используйте этот код:
public void deleteAll()
{
SQLiteDatabase db = this.getWritableDatabase();
db.execSQL("delete from "+ TABLE_NAME);
db.close();
}
вы можете добавить его в класс DatabaseHandler, это полный исходный код:
public class DatabaseHandler extends SQLiteOpenHelper {
// All Static variables
// Database Version
private static final int DATABASE_VERSION = 1;
// Database Name
public static final String DATABASE_NAME = "OffLineMessagesClient";
// Contacts table name
public static final String TABLE_NAME = "messages_client";
// Contacts Table Columns names
private static final String KEY_ENTITY_ID = "entity_id";
private static final String KEY_MESSAGE = "message";
public DatabaseHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
// Creating Tables
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_NAME + "("
+ KEY_ENTITY_ID + " INTEGER,"
+ KEY_MESSAGE + " TEXT"
+ ")";
db.execSQL(CREATE_CONTACTS_TABLE);
}
// Upgrading database
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion,
int newVersion) {
// Drop older table if existed
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
// Create tables again
onCreate(db);
}
public void deleteAll()
{
SQLiteDatabase db = this.getWritableDatabase();
db.execSQL("delete from "+ TABLE_NAME);
db.close();
}
}
Одна вещь, которую вы можете попробовать при разработке на устройстве:
настройки >> приложения >> (имя вашего приложения) >> Хранение >> очистить кэш и очистить данные
, очистив данные приложения и кэш приложения, вы также стираете базу данных sql.
На самом деле другой способ, которым я это сделал, - это DROP
таблицы, а затем просто вызвать метод onCreate
для SQLiteDatabase
. Я не знаю, какой из них наиболее эффективен Delete
или Drop
, потому что я не особо задумывался о том, насколько эффективен каждый метод, но он прекрасно работает для меня, потому что в моей исходной базе данных у меня установлены некоторые значения по умолчанию, и поэтому когда я вызываю метод onCreate
для базы данных, у меня там также есть некоторые методы PUT
. Это сохраняет репликацию кода. (вместо того, чтобы выполнять удаление, а затем путы, я получаю многоцелевое назначение из моей функции onCreate
).
Я называю это reset
. Так что вам просто нужно сделать db.reset()
, а затем значения по умолчанию будут добавлены в onCreate
после того, как вы создадите свои таблицы.
public void reset () throws SQLException {
db = DBHelper.getWritableDatabase ();
db.execSQL ("drop table "+TABLE_NAME);
db.close ();
this.DBHelper.onCreate (this.db);
}