所以基本上我通過一個基於控制檯的菜單讓我的程序,是嗎?它是一個數據庫管理器,它通過回答數字來操作(你知道,輸入'1'輸入記錄,輸入'2'來導出記錄等)。所以在這裏沒有什麼不同的方法來混淆參數。但它似乎沒有工作呢? 這裏是我的代碼,之後我會告訴你我試過了什麼。通過JDBC將CSV內容加載到數據庫中?
public void loadCSV(String table, String filename) {
String query;
try (Statement st = con.createStatement()) {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/DrSoheirManager", "root", "ITGS!!!");
st = con.createStatement();
query = "load data local infile '/Users/****/NetBeansProjects/IA Draft 3/" +
filename + "' ignore into table " + table + " columns terminated
by ',' \n" + " lines terminated by '\\n'";
/* load data local infile '/users/****/netbeansprojects/ia draft
3/patients.csv' ignore into table */
st.execute(query);
} catch (Exception e) {
e.printStackTrace();
st = null;
}
}
所以如何(應)中使用的方法,基本上是:loadCSV( 「患者」,patients.csv);其中患者是我想要輸入值的表的名稱,而patients.csv是我想輸入的值的來源。 這是我第一次使用JDBC,所以我不熟悉涉及的方法,但我試圖用st.executeQuery()和st.executeUpdate()替換st.execute(查詢),都沒有工作。事先我得到一個錯誤,但改變SQL查詢有點似乎已經修復了。現在我沒有收到錯誤,但是這些信息並沒有被添加到數據庫中。
ps:我使用'忽略'功能,因爲我希望能夠導入數據庫而不添加重複項。我做對了嗎?
如果我違反任何規則發佈此請讓我知道,所以我可以修復我的錯誤。預先感謝您:)
編輯:我的架構:
和樣本數據集:
CREATE TABLE IF NOT EXISTS `Patients` (
`ID` int(11) NOT NULL,
`fname` text NOT NULL,
`lname` text NOT NULL,
`Diagnosis` text NOT NULL,
`phone` varchar(15) NOT NULL,
`email` varchar(25) NOT NULL,
`DOB` date NOT NULL,
`DOFV` date NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
INSERT INTO `Patients` (`ID`, `fname`, `lname`, `Diagnosis`, `phone`, `email`, `DOB`, `DOFV`) VALUES
(1, 'hanalei', 'ezz', 'hemophelia', '+1(919)929-6567', '[email protected]', '1998-08-22', '2008-03-12'),
(2, 'monika', 'zanesco', 'sickle cell disease', '+1(919)939-4264', '[email protected]', '1998-10-05', '2016-04-13'),
(3, 'bang', 'pham', 'leukemia', '+1(919)243-8937', '[email protected]', '1998-03-15', '2013-03-03');
也值得注意的是,我用asterixes代替了我的用戶名,所以這些不存在於我的實際代碼中。 –
顯示你的'show create table xyz'和一個數據樣本(像5行) – Drew
@Drew對不起?你是什麼意思? –