我如何才能显示一个包含姓名、性别和出生日期的数据表,而只显示今天出生的人?
使用来自jdbc的java连接。
也就是说,我有一张分别于2015年6月15日、2015年5月13日和2015年6月17日出生的3个孩子的表格。
逻辑执行后,只有一个DOB在2015年6月17日(今天的日期)的孩子会出现在桌面上。
您应该避免旧的java.util.Date/。与Java捆绑的日历类。取而代之的是使用Joda-Time库或内置于Java8及更高版本的新java.time包(受Joda-Time启发)。下面的代码使用Joda-Time 2.8,如果使用java.time.
时区对于确定日期至关重要。例如,巴黎的新的一天比蒙特勒尔的早。大多数专业级数据库将其日期时间值存储在UTC时区。您需要根据所需的时区进行调整。例如,如果应用程序中的“今天”表示“蒙特勒尔的今天”,则必须应用“Americal/Montreal”时区。
一般来说,处理日期时间范围的最佳方法是通过“半开”方法。这意味着开始是包容的,而结束是排他性的。这避免了像试图确定一天中最后一秒的问题。搜索StackOverflow以获取讨论和更多示例。
也许您在数据库中使用的是java.sql.Date
兼容的数据类型(仅限日期的值,没有一天中的时间),而不是java.sql.Timestamp
兼容的类型。如果是,请使用Joda-Time(或java.time)中的LocalDate
类。
在MySQL中,日期时间值的处理非常有限,所以我不确定这个代码示例在这里是否有效。你可能需要调整。这个例子是从我使用Postgres的实际工作中提取出来的,Postgres具有出色的日期时间处理能力。
如果需要将Joda TimeDateTime
转换为java。util。互操作性的日期类型,然后简单调用toDate
方法。爪哇。时间包有类似的转换方法。搜索堆栈溢出。
严格地说,这个示例不需要使用PreparedStatement
。如果(A)您将重复调用此语句并希望获得可能的性能提升,或者(b)您需要避免SQL注入安全风险,则需要PreparedStatement。这里的情况也不是这样,但我发现养成总是使用PreparedStatement
的习惯更容易。
以下示例从未经过测试。
ArrayList< Person > list = new ArrayList<>( ); // Goal is to populate this List with Person objects representing rows from the database.
// Purpose: Query database for "person_" rows where the person was born today.
DateTimeZone zone = DateTimeZone.forID( "America/Montreal" );
DateTime today = DateTime.now( zone ); // Get the date-time for a particular time zone.
DateTime todayStart = today.withTimeAtStartOfDay( ); // First moment of the day. Usually this is the time 00:00:00.000 but not always.
DateTime tomorrowStart = todayStart.plusDays( 1 );
// We will query by the "Half-Open" approach where the beginning is *inclusive* while the ending is *exclusive*.
java.sql.Timestamp tsStart = new java.sql.Timestamp( todayStart.getMillis( ) ); // Convert a Joda-Time DateTime object to a java.sql.Timestamp object.
java.sql.Timestamp tsStop = new java.sql.Timestamp( tomorrowStart.getMillis( ) );
StringBuilder sql = new StringBuilder( );
sql.append( "SELECT name_ , gender_ , date_of_birth_ " + "\n" );
sql.append( "FROM person_ " + "\n" );
sql.append( "WHERE date_of_birth_ >= ? AND date_of_birth_ < + ? " + "\n" ); // Half-Open query, "[)", beginning is *inclusive* while the ending is *exclusive*.
sql.append( ";" );
try ( Connection conn = DBHelper.instance( ).dataSource( ).getConnection( ) ; // Where "DBHelper" is your own class, to handle particulars for your own database, user account, password.
PreparedStatement pstmt = conn.prepareStatement( sql.toString( ) ) ; ) {
pstmt.setTimestamp( 1, tsStart );
pstmt.setTimestamp( 2, tsStop );
try ( ResultSet rs = pstmt.executeQuery( ) ; ) {
int count = 0; // Count rows extracted from ResultSet.
while ( rs.next( ) ) {
count++;
// Extract fields from this row.
String personName = rs.getString( "name_" );
String gender = rs.getString( "gender_" );
java.sql.Timestamp dateOfBirthTs = rs.getTimestamp( "date_of_birth_" );
DateTime dateOfBirth = new DateTime( dateOfBirthTs , zone );
// Instantiate an object to represent this row's data.
Person person = new Person( personName, gender, dateOfBirth ); // Where "Person" is your own class for representing this data.
list.add( person ); // Collect these Person objects.
}
// If expecting a certain number of rows, verify that number.
if ( count == 0 ) {
logger.error( "Found no row in database for date range: " + tsStart + "/" + tsStop + "." ); // I recommend SLF4J & Logback as a logging solution.
} else if ( count > 1 ) {
logger.error( "Found more than a single row (" + count + ") in database for date range: " + tsStart + "/" + tsStop + "." );
}
}
} catch ( SQLException ex ) {
logger.error( "SQLException during: " + message + "\n" + ex );
} catch ( Exception ex ) {
logger.error( "Exception during: " + message + "\n" + ex );
}
根据我对JDBC的记忆,您可以首先设置查询,在您的情况下,这应该相当简单。然后从那里选择行。下面是一个可以处理的示例查询。
SELECT name, gender, birthday FROM people WHERE birthday=CURDATE()
CURDATE()将为您提供当前日期,您可以将其与出生日期进行比较。如果您需要关于如何使用JDBC执行此操作的实际信息,请在问题中指定,或留下评论。
嗨,我正在创建一个C#程序,用户可以登录和预订目的地的公共汽车座位,我有这个程序,用户可以插入/更新/删除数据,但我希望数据只显示当前登录的数据,这是我的代码下面。 此函数位于主仪表板类中,它在其中向dataviewgrid显示SAITS表 这是我的数据库表,一旦用户登录,我想做的就是按userID显示每个seatID,seatID是这个表的主键,userID是链接到userdata表的外键。
本文向大家介绍Java基于JDBC连接数据库及显示数据操作示例,包括了Java基于JDBC连接数据库及显示数据操作示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java基于JDBC连接数据库及显示数据操作。分享给大家供大家参考,具体如下: 1. 导入jdbc包 java要连接MySQL数据库需要用到JDBC工具(mysql-connector-java-5.1.39-bin.jar)
问题内容: 在我们的Java应用程序屏幕之一上,我们希望在类似Excel的电子表格组件上显示从Excel文件加载的数据。 该组件必须能够评估电子表格中的公式,并且还必须像加载的Excel文件一样保留常规单元格格式。我们必须能够以编程方式更改电子表格中的单元格值。 自由是一件好事。 您会建议使用任何Java库吗? 问题答案: Apache POI。它是免费的, 但是您不能在此库的帮助下评估形式。 B
本文向大家介绍基于PHP实现数据分页显示功能,包括了基于PHP实现数据分页显示功能的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了数据分页显示功能的PHP实现代码,供大家参考,具体内容如下 实现代码: 以上就是本文的全部内容,希望能给大家一个参考,也希望大家多多支持呐喊教程。
应用程序运行良好...只是数据没有出现...我已经添加了sha用户电子邮件显示在登录后,在登录活动中我已经添加了 但是在实时数据库数据不显示以防万一…我也等了半个小时,尝试了所有的东西…网络也不错。数据库中的数据库规则的数据库图片 mainActivity.java//不能用于单个子级,即firebaseDatabase.getInstance().getReference().child(“aj
本文向大家介绍extjs_02_grid显示本地数据、显示跨域数据,包括了extjs_02_grid显示本地数据、显示跨域数据的使用技巧和注意事项,需要的朋友参考一下 1.显示表格 2.显示本地数据 3.显示跨域jsonp数据