所以基本上我通过一个基于控制台的菜单让我的程序,是吗?它是一个数据库管理器,它通过回答数字来操作(你知道,输入'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对不起?你是什么意思? –