小编Oma*_*ohl的帖子

在MySQL日期字段中存储不完整的日期

我想为用户提供引入不完整日期的可能性(例如2005年或1998年1月),还要提供年,月,日的完整日期.我可以使用DB中的单个日期字段来完成此操作吗?

我试过UPDATE tableA SET mydate = '2001-00-00',它似乎工作(没有错误),但我不确定这是否正确.在内部我假设使用时间戳,那么MySQL如何代表那些0?

mysql date

21
推荐指数
1
解决办法
7981
查看次数

更新应用程序时,identifierForVendor可以更改吗?

除非供应商的所有应用程序都从设备中删除,否则不应更改identifierForVendor.如果我有一个更新的应用程序会发生什么.identifierForVendor可以改变吗?制定这个问题的另一种方法是:应用程序升级是否与卸载和安装相同(至少在某种意义上)?

我问的原因是,如果我从App Store安装当前版本的应用程序,然后通过XCode"存档"新版本并通过iTunes安装它,则identifierForVendor会发生变化.我不知道这是特殊情况还是"正常"App更新/升级的情况.

iphone ios6

18
推荐指数
1
解决办法
2478
查看次数

使用MockContext时,在较新的Android版本中的ApplicationTestCase.createApplication()中的AssertionFailedError

我正在编写一个Android ApplicationTestCase(来自Diego T. Milano的Android应用程序测试指南中的TemperatureConverterApplicationTests示例,第171页).这个例子是针对Android 2.3编写的,它似乎不适用于Android 4.你不必知道这本书来理解这个问题,因为我简化了它.

这适用于Android 2.3.3(API 10):

setContext(new MockContext());
createApplication();
Run Code Online (Sandbox Code Playgroud)

[确切地说,抛出了UnsupportedOperationException,因为没有实现getPackageName().但这是正常的,可以通过使用实现getPackageName()和getSharedPreferences()的MockContext()子类来解决.这是不相关的,因为即使这样做之后问题仍然存在.]

问题是,使用Android 4.1.2(API 16)它不起作用.我得到一个AssertionFailedError,通过一些调试我发现是由于在ApplicationTestCase的第100行抛出了ClassCastException.

mApplication = (T) Instrumentation.newApplication(mApplicationClass, getContext());
Run Code Online (Sandbox Code Playgroud)

ClassCastException异常信息是:

java.lang.ClassCastException: android.test.mock.MockContext cannot be cast to android.app.ContextImpl
Run Code Online (Sandbox Code Playgroud)

任何建议为什么会发生这种情况以及如何避免?

编辑:相关问题:使用MockContext的Android ApplicationTestCase

android android-4.0-ice-cream-sandwich android-testing

10
推荐指数
1
解决办法
1438
查看次数

为什么'git status'会忽略.gitattributes清理过滤器?

我有一个.gitattributes清理过滤器,用于在提交之前删除文件中的所有注释.

$ cat .git/config
[filter "cleancomments"]
    clean = "grep -v '^#'"

$ cat .gitattributes
*   filter=cleancomments
Run Code Online (Sandbox Code Playgroud)

我有一个文件'test',其中包含以下内容(在存储库中提交):

This is a file with random content
Run Code Online (Sandbox Code Playgroud)

现在我对'test'进行修改并添加注释:

This is a file with random content
# and some comments
# like this
Run Code Online (Sandbox Code Playgroud)

git status 现在告诉我:

modified:   test
Run Code Online (Sandbox Code Playgroud)

但是git diff是空的(应该如此).

我不完全清楚为什么git status不使用过滤器来决定文件是否被修改,但我认为这是它的实现方式.

对我来说真正神秘的是:

如果我这样做:

git add test
Run Code Online (Sandbox Code Playgroud)

然后突然文件'test'不再标记为已修改,并且它不会出现在git索引中.为什么是这样?

git gitattributes

10
推荐指数
1
解决办法
1234
查看次数

在MySQL中必要时存储冗余信息或连接表是否更好?

我有一个网上商店,用户可以在这里购买带有自己产品的小商店.这些产品中的每一个都可以有与之相关的问题,并且商店的所有者有能力回答这些问题.此信息存储在3个表中,包括"问题"(QuestionID,ProductID,...)表,"产品"(ProductID,ShopID,...)表和"商店"(ShopID,OwnerID,...)表.

在"问题"表中设置ShopID(允许店主查看他的所有问题)或加入这三个表以获得与某个商店匹配的问题更好吗?

php mysql database database-design e-commerce

8
推荐指数
1
解决办法
1002
查看次数

SQLite JDBC rs.getDate()getTimestamp()等都返回错误的值

由于某种原因使用JDBC for SQLite时,Date和Timestamp值正确存储在DB中,在使用命令行sqlite3工具时正确显示,但使用ResultSet函数检索这些值时,它不起作用.下面是一个小型测试类,演示了我的意思.

import java.sql.*;

public class Test {
  public static void main(String[] args) throws Exception {
    Class.forName("org.sqlite.JDBC");
    Connection conn = DriverManager.getConnection("jdbc:sqlite:test.db");
    Statement stat = conn.createStatement();
    stat.executeUpdate("drop table if exists people;");
    stat.executeUpdate("create table people (name, occupation, date date);");
stat.executeUpdate("insert into people values ('Turing', 'Computers', date('now'));");

    ResultSet rs = stat.executeQuery("select * from people;");
    while (rs.next()) {
      System.out.println("name = " + rs.getString("name"));
      System.out.println("job = " + rs.getString("occupation"));
      System.out.println("date = " + rs.getDate("date"));
      System.out.println("dateAsString = " + rs.getString("date"));
    }
    rs.close();
    conn.close();
  }
} …
Run Code Online (Sandbox Code Playgroud)

sqlite datetime timestamp date jdbc

6
推荐指数
1
解决办法
1万
查看次数