У меня есть таблица с типом столбца TIME (с именем myTime
). строка t = "15:50:00"; Как преобразовать и вставить эту строку в столбец myTime
(ЧЧ: ММ: СС).
Спасибо!
У меня есть таблица с типом столбца TIME (с именем myTime
). строка t = "15:50:00"; Как преобразовать и вставить эту строку в столбец myTime
(ЧЧ: ММ: СС).
Спасибо!
Вы можете использовать тип данных String
для представления значения Time
или вы можете использовать тип данных MySQL Time
, а в коде Java использовать preparedStatement.setTime()
, например:
Ваша таблица:
CREATE my_table (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR2(30) NOT NULL,
time_from TIME
);
Ваш код Java может выглядеть так:
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.Time;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class MySQLDatabaseDemo {
Connection conn = null;
PreparedStatement preparedStatement = null;
public static Connection getConnection() throws Exception {
String driver = "org.gjt.mm.mysql.Driver";
String url = "jdbc:mysql://localhost/databaseName";
String username = "root";
String password = "root";
Class.forName(driver);
Connection conn = DriverManager.getConnection(url, username,
password);
return conn;
}
/**
* @param args [0] = value of "id"
* [1] = value of "name"
* [2] = value of "time_from"
*/
public void insertRowWithTimeDatatype(String[] args) {
String query = "insert into my_table (id, name, timefrom) " +
"values (?, ?, ?)";
DateFormat sdf = new SimpleDateFormat("hh:mm:ss");
Date date = sdf.parse(args[2]);
Time time = new Time(date.getTime());
try {
conn = getConnection(); // getConnection() is YOUR method
preparedStatement = conn.prepareStatement(query);
preparedStatement.setInt(1, Integer.parseInt(args[0]));
preparedStatement.setString(2, args[1]);
preparedStatement.setTime(3, time);
// Execute statement and return the number of rows affected
int rowCount = preparedStatement.executeUpdate();
System.out.println("Number of rows affected: " + rowCount);
} finally {
preparedStatement.close();
conn.close();
}
}
}
Date
, Time
и SimpleDateFormat
. По крайней мере, не как первый вариант и без всяких оговорок. Сегодня у нас намного лучше.
- person Ole V.V.; 13.08.2017
Вы можете использовать TIME Datatype. Например,
CREATE TABLE tests (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(500) NOT NULL,
start_time TIME,
end_time TIME
);
setString()
для типа данных SQL.
- person Ashraf.Shk786; 13.08.2017
Вы можете использовать setString()
для установки любого типа данных SQL. Попробуйте что-то вроде этого:
prepStatement.setString("myTime", "15:50:00");
У меня лично нет опыта, но лучшее, что вы можете сделать, - это сохранить свое время в LocalTime
объекте в Java и использовать yourPreparedStatement.setObject(parameterIndex, yourTime);
, чтобы установить время как значение в вашем операторе SQL insert
или update
. Я уверен, что вы можете найти там примеры кода, руководства, документацию и т. Д. Пожалуйста, ищите.
Итак, откуда вы берете объект LocalTime
?
LocalTime yourTime = LocalTime.parse(t);
(где t
- это ваша строка времени, например 15:50:00
, как в вопросе)
PreparedStatement
для вставки в базу данных? Или Hibernate, SQL * J или какой-нибудь другой навороченный механизм? - person Ole V.V.   schedule 13.08.2017java.util.Date
, как в связанном вопросе и принятом ответе на него. Лучше использоватьjava.time.LocalTime
. - person Ole V.V.   schedule 14.08.2017