在我正在关注的教程和我看到的更多地方,onUpgrade - > drop table if exists,然后重新创建表.
这样做的目的是什么?
private static class DbHelper extends SQLiteOpenHelper{
public DbHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" +
KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
KEY_NAME + " TEXT NOT NULL, " +
KEY_HOTNESS + " TEXT NOT NULL);"
);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE); …Run Code Online (Sandbox Code Playgroud) 背景:假设我正在使用实体框架,并且映射的实体之一如下:
class Foo
{
public int ID { get; set; }
public string Bar { get; set; }
// other useful properties
}
Run Code Online (Sandbox Code Playgroud)
使用映射:
class FooMap : EntityTypeConfiguration<Foo>
{
// bear me with, I know this is redundant right now
ToTable("Foo");
HasKey(e => e.ID);
Property(e => e.ID).HasColumnName("ID");
Property(e => e.Bar);
}
Run Code Online (Sandbox Code Playgroud)
在某个地方,我们需要更改列名称,Foo因为我的老板告诉我Foo需要一个更奢侈的名称ID,否则我们的客户会不高兴。他告诉我们也将其重命名为“FooID”:
class FooMap : EntityTypeConfiguration<Foo>
{
// bear me with, I know this is redundant right now
ToTable("Foo");
HasKey(e => e.ID);
Property(e …Run Code Online (Sandbox Code Playgroud) 我正在调查使用Liquibase进行使用Oracle的新项目,我想知道如何确保我的changeSet足够强大,可以在没有人工干预的情况下从任何类型的故障中恢复.理想情况下,我会使用runInTransaction属性,这将允许DDL在失败时回滚,但Oracle会自动提交DDL.对于这种情况,文档建议:
因此,通常最好每个changeSet只进行一次更改,除非您希望将一组非自动提交更改应用为插入数据等事务.
每个changeSet有一个DDL可以减少出现问题的几率,但不会消除它们.如果DDL成功,但对DATABASECHANGELOG的更新失败,从我的测试中看来,Liquibase似乎卡住了,需要手动干预.
有必要在每一步使用前提条件来避免这个问题吗?这使得生成的changeSet非常冗长.这是Liquibase示例表定义之一:
<changeSet author="jsmith" id="1">
<createTable tableName="departments"
remarks="The departments of this company. Does not include geographical divisions.">
<column name="id" type="number(4,0)">
<constraints nullable="false" primaryKey="true"
primaryKeyName="DPT_PK"/>
</column>
<column name="dname" type="varchar2(14)"
remarks="The official department name as registered on the internal website."/>
</createTable>
<addUniqueConstraint constraintName="departments_uk1"
columnNames="dname" tableName="departments"/>
<createSequence sequenceName="departments_seq"/>
</changeSet>
Run Code Online (Sandbox Code Playgroud)
为了使这个幂等,我认为它必须改为如下:
<changeSet author="jsmith" id="1">
<preConditions onFail="MARK_RAN">
<not>
<tableExists tableName="departments" />
</not>
</preConditions>
<createTable tableName="departments"
remarks="The departments of this company. Does not include geographical divisions.">
<column name="id" type="number(4,0)" / column>
<column name="dname" type="varchar2(14)" …Run Code Online (Sandbox Code Playgroud) 我正在开发应用程序的第二个版本。我正面临一个问题。
在我的应用程序中,数据库位于资产文件夹中。现在,我想从第二个版本中的assets文件夹更新数据库。
我尝试将代码升级为:
// Data Base Version.
private static final int DATABASE_VERSION = 2;
Run Code Online (Sandbox Code Playgroud)
我将版本从1更改为2。
//构造函数
public DataBaseHelperClass(Context myContext) {
super(myContext, DATABASE_NAME, null ,DATABASE_VERSION);
this.context = myContext;
//The Android's default system path of your application database.
DB_PATH = "/data/data/com.example.myapp/databases/";
}
Run Code Online (Sandbox Code Playgroud)
//创建数据库
public void createDataBase() throws IOException{
//check if the database exists
boolean databaseExist = checkDataBase();
if(databaseExist){
this.getWritableDatabase();
}else{
this.getReadableDatabase();
try{
copyDataBase();
} catch (IOException e){
throw new Error("Error copying database");
}
}// end if else dbExist
} // end createDataBase(). …Run Code Online (Sandbox Code Playgroud) 我一直在这个网站上看一段时间,但没有找到答案.我正在尝试对我知道已经在表中的数据进行批量更新.当某个条件返回行ID时,我需要设置一列.这是单一方法,但我想提高效率,并将其作为批量处理.我们的数据库不在Provider中,因此我只使用Helper类.
public void markUnavailable(int myId) {
SQLiteDatabase db = this.getWritableDatabase();
String sql = "UPDATE " + MYTABLE + " SET " + Col.IS_AVAILABLE + "= 0"+ " WHERE " + Col.MY_ID + "=" + myId;
db.execSQL(sql);
db.close();
}
Run Code Online (Sandbox Code Playgroud)
我想传入一组myIds来进行批量更新.我无法执行Insert或Replace语句,因为我无法访问所有列数据,并且由于代码更改太多而不希望通过它.
public void markUnavailable(int[] myId) {
// ????
/// need some way to loop through and update in bulk
}
Run Code Online (Sandbox Code Playgroud) 我正在编写一个C#应用程序,它将更新SQL Server数据库中的字段.我正在测试的当前算法只是从"状态"字段中提取数据,将每个值存储在ArrayList中,将其大写,然后将其写回数据库.我遇到逻辑问题.
我将所有值都拉入ArrayList并将它们大写.这工作正常.我现在有一个数组,例如,100个值(即myArray[0]- myArray[99]).然后我使用FOR循环将值写回数据库:
for (int i = 0; i <= (myArray.Count - 1); i++)
{
SqlCommand myCommand =
new SqlCommand("UPDATE myList SET State = '" + recordArray[i].ToString() +
"' WHERE uniqueID = '" + (i + 1) + "'", dbConnection);
myCommand.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)
我在上面的例子中使用"uniqueID"来根据主键放置这些值.然而,问题是主键几乎是顺序的; 序列中有一些缺失的数字.因此,即使我确切地拥有了我需要的值的数量,并且它们在数组中以正确的顺序被推回到数据库中,一旦我在序列中失效,其余的数据就会被放置在错误的领域.我知道这是我的逻辑失误,但我不知道如何确保正确地放置每个单独的价值.
在此先感谢您的帮助.
我有一个问题,在使用sql server 2005时,我已执行更新查询而没有where子句(错误地)并且列的所有原始值都丢失了.
我怎样才能得到旧值?
欢迎提出任何建议/提示/解决方案,我们将不胜感激.
请参考下面的代码.我正在使用phpMyAdmin将我的数据存储在xampp中(作为我的服务器).我找到了这段代码并添加到我的网站中.我的问题是; 如何将结果保存在数据库中.任何人??
<!DOCTYPE html>
<html>
<head>
<title>Geo City Locator by geoip-db.com</title>
</head>
<body>
<div>Country: <span id="country"></span></div>
<div>State: <span id="state"></span></div>
<div>City: <span id="city"></span></div>
<div>Postal: <span id="postal"></span></div>
<div>Latitude: <span id="latitude"></span></div>
<div>Longitude: <span id="longitude"></span></div>
<div>IP address: <span id="ipv4"></span></div>
</body>
<script>
var country = document.getElementById('country');
var state = document.getElementById('state');
var city = document.getElementById('city');
var postal = document.getElementById('postal');
var latitude = document.getElementById('latitude');
var longitude = document.getElementById('longitude');
var ip = document.getElementById('ipv4');
function callback(data)
{
country.innerHTML = data.country_name;
state.innerHTML = data.state;
city.innerHTML = data.city;
postal.innerHTML = data.postal; …Run Code Online (Sandbox Code Playgroud)android ×3
database ×3
sqlite ×3
c# ×2
sql ×2
sql-server ×2
bulkupdate ×1
drop-table ×1
liquibase ×1
mysqli ×1
oracle ×1
php ×1
sql-update ×1