- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个程序正在读取文本文件并将某些细节插入到 SQLite 数据库中。文本文件中的每一行都以 V、D、A、N、T、I 或 O 开头。例如,一行将是
I,Sam,Jones,,123,1,Liz Jones,334-555-1234,INS123,INS Company, Smith, Broken Arm,1-1-2019, 1-3-2019
我遇到的问题是在我的 main 方法中读取文本文件的第一行,结果是我的 else 语句打印行。我将第一个字符存储在 char c 中,在调试时,我可以看到第一个“I”被存储为“c =\uFEF”。随后的每一行都按设计工作,但我不明白为什么。
我尝试先初始化变量,然后设置其值,我尝试使用 Scanner 而不是 BufferedReader 。我尝试在文件开头插入一个空行。
import java.sql.*;
import java.io.*;
public class InsertData {
private static Connection connect(){
String url = "jdbc:sqlite:C://sqlite/Hospital.db";
Connection conn = null;
try {
conn = DriverManager.getConnection(url);
conn.createStatement().executeUpdate("PRAGMA foreign_keys = ON;");
} catch (SQLException e) {
System.out.println(e.getMessage());
}
return conn;
}
public static void main(String[] args) throws IOException {
connect();
String patientFile = "Person.txt";
String treatmentFile = "treatment.txt";
String additionalDoctorsFile = "additional_doctors.txt";
try {
BufferedReader br = new BufferedReader(new FileReader(patientFile));
String line;
while((line = br.readLine()) != null) {
char c;
c = line.charAt(0);
if ( c == 'V') {
System.out.println("Inserting Volunteer to DB:\n" + line + "\n");
insertVolunteer(line);
}
else if (c == 'I') {
System.out.println("Inserting Inpatients to DB:\n" + line + "\n");
insertPatient(line);
insertAdmittedPatient(line);
}
else if (c == 'O') {
System.out.println("Inserting Outpatients to DB:\n" + line + "\n");
insertPatient(line);
}
else if (c == 'D') {
System.out.println("Inserting Doctor to DB:\n" + line + "\n");
insertDoctor(line);
}
else if (c == 'A') {
System.out.println("Inserting Administrator to DB:\n" + line + "\n");
insertAdministrator(line);
}
else if (c == 'N') {
System.out.println("Inserting Nurse to DB:\n" + line + "\n");
insertNurse(line);
}
else if (c == 'T') {
System.out.println("Inserting Technician to DB:\n" + line + "\n");
insertTechnician(line);
}
else {
System.out.println("Person input entered incorrectly formatted: " + line + "\n" +
"Record not being written to DB!\n");
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
finally {
BufferedReader br = new BufferedReader(new FileReader(treatmentFile));
String line;
while((line = br.readLine()) != null) {
String[] str = line.trim().split(",");
String sql = "INSERT INTO Treatment(patientLastname, doctorLastname, treatmentType, treatmentName, timestamp) VALUES (?,?,?,?,?);";
try (Connection conn = connect()) {
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1,str[0]);
ps.setString(2, str[1]);
char t = str[2].trim().charAt(0);
if (t == 'M') {
ps.setString(3, "Medication");
}
else if (t == 'P') {
ps.setString(3, "Procedure");
}
else {
ps.setString(3, "N/A");
System.out.println("Treatment is neither a Procedure or Medication, unable to write to DB");
}
ps.setString(4, str[3]);
ps.setString(5, str[4]);
ps.executeUpdate();
ps.close();
System.out.println("Inserting Treatments to DB:\n" + line + "\n");
}
catch (SQLException e) {
e.printStackTrace();
}
}
BufferedReader br2 = new BufferedReader(new FileReader(additionalDoctorsFile));
String line2;
while((line2 = br2.readLine()) != null) {
String[] str2 = line2.trim().split(",");
String sql = "INSERT INTO AdditionalDoctors(firstname, lastname) VALUES (?,?);";
try (Connection conn = connect()) {
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1,str2[0]);
ps.setString(2, str2[1]);
ps.executeUpdate();
ps.close();
System.out.println("Inserting Additional Doctors to DB:\n" + line2 + "\n");
}
catch (SQLException e) {
e.printStackTrace();
}
}
}
System.out.println("All data inserted!");
}
public static void insertAdmittedPatient (String lineIn) {
String admittedPatient = lineIn;
String[] str = admittedPatient.trim().split(",");
String sql = "INSERT INTO AdmittedPatient(patientid, firstname, lastname, doctorLastname, admissionDate, dischargeDate) VALUES (?,?,?,?,?,?);";
try (Connection conn = connect()) {
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1,str[4]);
ps.setString(2, str[1]);
ps.setString(3, str[2]);
ps.setString(4, str[10]);
ps.setString(5, str[12]);
ps.setString(6, str[13]);
ps.executeUpdate();
ps.close();
}
catch (SQLException e) {
e.printStackTrace();
}
}
public static void insertPatient (String lineIn) {
String inPatient = lineIn;
if (inPatient.charAt(0) == 'I') {
String[] str = inPatient.trim().split(",");
int arr = str.length;
String sql = "INSERT INTO Patient(patientid, firstname, lastname, roomNumber, insurance, insuranceNumber, " +
"emergencyContact, emergencyPhone, diagnosis, treatment, admitDate, dischargeDate) VALUES (?,?,?,?,?,?,?,?,?,?,?,?);";
try (Connection conn = connect()) {
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1,str[4]);
ps.setString(2, str[1]);
ps.setString(3, str[2]);
int room = Integer.parseInt(str[5]);
if ((room >= 1) && (room <= 20)) {
ps.setString(4, str[5]);
}
else {
System.out.println("Invalid room number. Must be between 1-20\n" +
"Inserting 'Invalid' to DB");
ps.setString(4, "Invalid");
}
ps.setString(5,str[9]);
ps.setString(6, str[8]);
ps.setString(7,str[6]);
ps.setString(8, str[7]);
ps.setString(9, str[11]);
ps.setString(10, "inpatient");
ps.setString(11, str[12]);
ps.setString(12, str[13]);
ps.executeUpdate();
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
else {
String[] str = inPatient.trim().split(",");
String sql = "INSERT INTO Patient(patientid, firstname, lastname, roomNumber, insurance, insuranceNumber, " +
"emergencyContact, emergencyPhone, diagnosis, treatment, admitDate, dischargeDate) VALUES (?,?,?,?,?,?,?,?,?,?,?,?);";
try (Connection conn = connect()) {
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1,str[4]);
ps.setString(2, str[1]);
ps.setString(3, str[2]);
ps.setString(4, "N/A");
ps.setString(5,"N/A");
ps.setString(6, "N/A");
ps.setString(7,"N/A");
ps.setString(8, "N/A");
ps.setString(9, "N/A");
ps.setString(10, "outpatient");
ps.setString(11, "n/a");
ps.setString(12, "n/a");
ps.executeUpdate();
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void insertVolunteer(String lineIn) {
String volunteer = lineIn;
String[] str = volunteer.trim().split(",");
String sql = "INSERT INTO Volunteer(firstname, lastname) VALUES (?,?);";
try (Connection conn = connect()) {
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, str[1]);
ps.setString(2, str[2]);
ps.executeUpdate();
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void insertDoctor(String lineIn) {
String doctor = lineIn;
String[] str = doctor.trim().split(",");
String sql = "INSERT INTO Doctor(firstname, lastname, consultantPriveleges, admittingPriveleges) VALUES (?,?,?,?);";
try (Connection conn = connect()) {
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, str[1]);
ps.setString(2, str[2]);
if (str[3].charAt(0) == 'A') {
ps.setString(3, "False");
ps.setString(4, "True");
}
else {
ps.setString(3, "True");
ps.setString(4, "False");
}
ps.executeUpdate();
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void insertAdministrator(String lineIn) {
String admin = lineIn;
String[] str = admin.trim().split(",");
String sql = "INSERT INTO Administrator(firstname, lastname) VALUES (?,?);";
try (Connection conn = connect()) {
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, str[1]);
ps.setString(2, str[2]);
ps.executeUpdate();
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void insertNurse(String lineIn) {
String admin = lineIn;
String[] str = admin.trim().split(",");
String sql = "INSERT INTO Nurse(firstname, lastname) VALUES (?,?);";
try (Connection conn = connect()) {
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, str[1]);
ps.setString(2, str[2]);
ps.executeUpdate();
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void insertTechnician(String lineIn) {
String admin = lineIn;
String[] str = admin.trim().split(",");
String sql = "INSERT INTO Technician(firstname, lastname) VALUES (?,?);";
try (Connection conn = connect()) {
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, str[1]);
ps.setString(2, str[2]);
ps.executeUpdate();
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
我的 Person.txt 文件中的前几行:
I,Tiera,Keeling,,5FVEJN66YMK4HT0RBEG1AWSUXJZ0FR,1,Alexa Keeling,729-811-8718,Aetna,AETOXJ989E9ZQ,Neva,Lead Poisoning,06-05-2019,06-10-2019
I,Miner,Jigalev,,P9VA7GJQ7E0MUF5XZ33EYYEM2LRZXZ,1,Micky Jigalev,843-545-3757,Red Cross,REDJW18A5IN6L,Jonathon,Ghonorrea,12-06-2010,12-09-2010
I,Briana,Fortier,,EM4QQ43Z8NNA1HPWWT34KJEEP8X8GF,1,Adlai Fortier,306-826-5478,Red Cross,REDLX0UX1W80F,Fernanda,Sprained Ankle,04-20-2012,04-21-2012
I,Yaritza,Aglinskas,,GKMDBWICY4Z32K58EQDWWZ0N88G3A0,1,Maryam Aglinskas,194-887-3283,Blue Shield,BLURZQL71DYX3,Sean,UTI,07-06-2010,07-10-2010
I,Latesha,Guadarrama,,MYRQ4VZU6ZGRD5NKPR3UWUCTYH3WZA,1,Tristen Guadarrama,237-775-1416,Red Cross,REDJKQ5UKF4FJ,Maurine,Poison Ivy,03-04-2018,03-14-2018
I,Jeffrey,Kane,,URC9D8OKUD1O6HEL19JW32AK7HO99O,1,Christen Kane,723-052-0159,Red Cross,REDSO7A2XJAEP,Mariel,Sinus Infection,07-15-2010,07-18-2010
I,Edd,Motoori,,AE2I2EOEHDXP436BCQN5CNOBYFVNJ6,1,Gilmer Motoori,371-640-2423,Aetna,AET5AZ7BEW2VX,Sincere,Dislocated Shoulder,03-20-2013,04-09-2013
I,Tiera,Keeling,,5FVEJN66YMK4HT0RBEG1AWSUXJZ0FR,1,Alexa Keeling,729-811-8718,Aetna,AETOXJ989E9ZQ,Neva,Lead Poisoning,06-05-2019,06-10-2019
I,Clive,Hiraoka,,0B18WK7PGCZK1C1NP1M9EAL55QABGG,1,Coby Hiraoka,840-607-8495,Aetna,AETXVFTRXQP2I,Corrie,Pulmonary Edema,05-28-2015,06-05-2015
I,Leoma,Adamo,,OFK9WMFEDJL1VB4PHSZ7S0FVE8DZ80,1,Tawny Adamo,730-337-9384,Aetna,AETLS5R8N8BDH,Annabel,Gun Shot,05-23-2013,06-13-2013
I,Melvin,Shahmametiev,,D82CEVQOULDEVDZCIXR82I2XXRXSPS,1,Ewin Shahmametiev,363-415-5748,Aetna,AETH6EEJU569K,Fernanda,Shark Bite,10-12-2012,10-14-2012
I,Florine,Evstifeev,,C5JFC4ZR6B7FOZ2MJF9MYGDVKY206X,1,Che Evstifeev,921-725-5356,Red Cross,REDY2CM6U6RWG,Maurine,Glaucoma,11-26-2016,12-11-2016
I,Richard,Nesvetaev,,NWEKL2CC1XNT79JDDFW8U2L3W8ERUQ,1,Malissa Nesvetaev,131-044-3236,Red Cross,REDWXUDH1EKRL,Annabel,Broken Leg,09-09-2013,09-24-2013
I,Cristen,Mihin,,XDBKTIYYSS6KNJ330NIX6HP3AZ4CTI,1,Mustafa Mihin,510-580-9174,Aetna,AET4FB0B0PZYB,Orvel,Trichinosis,05-16-2018,06-06-2018
I,Willard,Chauhan,,G8N1EF72MTWNY1JX52FAD5XVMEA1PR,1,Donia Chauhan,515-886-1297,Orange Cross,ORAX39RLBR93E,Warner,Heat Exhaustion,08-18-2018,09-06-2018
I,Georgeanna,Dover,,HDNDBYK9NUW349P9PBDGS8IGSTJW3Q,1,Hal Dover,433-308-4147,Green Cross,GREFYQQV2BIFZ,Mariann,Sun Burn,09-14-2012,10-03-2012
I,Deirdre,Woods,,ABP26C1H9UJV8136OO0Q0RL8DMJA2F,2,Aline Woods,708-426-3481,Red Cross,REDODODAIBLG7,Skip,Swine Flu,06-30-2018,07-20-2018
I,Micaela,Rapp,,EYRR3C2FOQV8S4BG0U7C6GQREMEKHS,1,Brea Rapp,413-458-6973,Aetna,AETKRGM4BEH85,Cayla,Tennis Elbow,11-05-2018,11-16-2018
I,Daren,Mao,,413CKEOQIGWLQXMMOMRJ3F0V4RH0I0,1,Kellen Mao,648-648-9784,Orange Cross,ORAQQE2VH9TQL,Suzie,Vitamin D Deficiency,06-24-2019,07-08-2019
I,Rickie,Kui,,5IWJ8147Z0MU8WZPPFLFLJCH5QIJC3,1,Kaylee Kui,784-354-0081,Green Cross,GREYLIUI532S5,Maurine,Depression,01-16-2018,01-17-2018
I,Dominic,Hagurov,,L55XCTOV9LTCIM36UWZ51AY7QI7O6W,1,Dwan Hagurov,969-614-8234,Aetna,AET0RKCRVCEHY,Skip,Broken Foot,04-19-2019,05-01-2019
I,Chantel,Blumenthal,,HZP1Z7H027CBMO9SXFJH7Y1ORTKDRM,1,Leda Blumenthal,971-142-8030,Orange Cross,ORAL2LG9ELABS,Fernanda,Ebola,02-10-2016,02-22-2016
I,Lettie,Eustis,,PHY0ECLVWHRP56OR5FWOGA8WPQIDAR,2,Kendrick Eustis,320-447-8781,Red Cross,REDN4V5IGOTVI,Neva,Altitude Sickness,05-29-2018,06-01-2018
O,Benjamen,Otmahov,,4I5GD8O068NFT8WQHM2YDA1G7SSIEC,,,,,,,,,
O,Leanna,Abramo,,LB2OAO9WAZBROTAZGLSZW555C3FWQ6,,,,,,,,,
O,Chauncy,Masih,,HYGDWYV9MDF63YMMU1NEM3CTAT8FVR,,,,,,,,,
O,Philomena,Zhmaev,,VZ5LF33XYGEN0JW2YWPW0V60XASX24,,,,,,,,,
O,Whit,Samuel,,DKTM0E0X9YHS56MWZ7OVYQGXNGLMP6,,,,,,,,,
O,Tyron,Niftrik,,GE7H7C0WRFSOLRMVJI7W6L5JE0KIRN,,,,,,,,,
O,Kasie,Georgeakopoulos,,HKXZ48V06NQPCU0BCZ7COLZJO7BY14,,,,,,,,,
O,Emmalee,Rapson,,JDXQM0I50NF36QQH6CG3DT3WTWEJRF,,,,,,,,,
O,Abigayle,Bertolini,,DRD3JQA7JXU8ZMT8HXOC43YVS1BE1P,,,,,,,,,
O,Marlene,Persov,,WDY33S66HNSZ4FJQSU2DE9CSM8ORBZ,,,,,,,,,
O,Reason,Nield,,L461W9IA3SP07FTG1UD55P3VKCAOEP,,,,,,,,,
O,Edson,Ivanov,,WI7OS8E6AGLR2CMVB0IJ1LNXGSK7IV,,,,,,,,,
O,Catharine,Chalupka,,YNJK0SVT7EC6EBQ7IWJ7AICMH86LG3,,,,,,,,,
O,Codey,Heywood,,UR0MAT4KTJ6K9R2K78RIS4TPF4GTT9,,,,,,,,,
O,Shawnna,Dopiro,,BD3XFNV8L2L1971F6QOSAUVVGCB6CY,,,,,,,,,
O,Shelton,Ruzsky,,OYQIYQEG8K2BVQG5AOQB8AP0R50K1O,,,,,,,,,
O,Coby,Oesterreicher,,7DNEEAWMZ9OHAT28RDUCOP2W3HH4AT,,,,,,,,,
O,Frieda,Karteshkin,,0D1RMQ7DQ6XC4JIEXT0FJK94LSW8OZ,,,,,,,,,
O,Mercedes,Abolins,,6RBHYMWZ3F87Y5HJH2B32NLEJMDU9B,,,,,,,,,
O,Suzanna,Rohlin,,M3WOZ4OO76F6ROG1D9C1498T7JCJV5,,,,,,,,,
O,Hilton,Aldworth,,W86SNM0P1CQDFCLZICGG1HQZRC1J7A,,,,,,,,,
O,Elfie,Judovich,,939GD4FLO9GRD0VN5KFMYFN8HO5G85,,,,,,,,,
O,Mintie,Yaimov,,NC628KXAW0PGE3C90VPPC6M68JE09H,,,,,,,,,
O,Clemma,Tovey,,HC1WYISJUQM08G6R703PYX1H31YEEM,,,,,,,,,
O,Johnpaul,Wizner,,SL4K5X73H28KK1LM07HL1AX3TD1CVK,,,,,,,,,
O,Barbara,Adrianov,,29OOCH5EE4WPWGMTV5BU322REOY73H,,,,,,,,,
O,Tobias,Dunne,,S8W38JEZMENNSL7XTWZF53636RKMI1,,,,,,,,,
O,Harding,Halatnikov,,6Q5D4243VISMIBG44WQSF88O8HRT8F,,,,,,,,,
O,Torrey,Kalitkin,,LRS7SRML51U05MLWRXSG8ZA9M959J8,,,,,,,,,
O,Demian,Dillon,,2Q1T1EMN4DFEGL90EKSJ46L11GFAH4,,,,,,,,,
O,Aubrey,Brooke,,ZFPUZZUR0XN5C1CD05FUGQAPW0RGJK,,,,,,,,,
最佳答案
您可以使用 Apache IO 的 BOMInputStream以静默方式消耗 BOM 标记。
Buffered Reader br = new BufferedReader(
new InputStreamReader(
new BOMInputStream(
new FileInputStream(patientFile)))) ;
关于java - String 的 charAt(0) 未返回预期值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57897279/
String dirtyStr = "Who. do yo$u th,ink you are?!"; System.out.println(scrub(dirtyStr));
我理解下面的代码计算名称字符串中每个字母出现的次数。 String name = "haier"; int[] count = new int[256]; for (int i = 0; i < na
我正在制作一个字母计数程序。有没有一种方法可以使用 1 个 case 来增加字符串中的字母数量,而不是使用 26 个 case。是否可以简化这个程序? import javax.swing.JOpti
我正在开发韩语名字的罗马化器,但我被困在这里,因为它不是从 A 到 B 的简单音译,而是更复杂的一个: 名称通常由3个音节组成(在JavaScript中被识别为3个字符),姓氏是第一个,后面通常是由2
https://jsfiddle.net/2L4t9saq/180/ 是我的 fiddle 大部分代码都是无用的,我只是发布重要的内容 var baseConverter = function(r,
我现在正在学习 Dart,我想知道如何在字符串中找到字母。我试过使用 charAt() ,但随后 Dart 编辑器说: Class 'String' has no instance method 'c
我打算制作一个简单的程序,该程序将接受用户输入,并在每个字母之间放置空格。例如,用户输入 mall,它返回 M A L L(在同一行)。我正在尝试使用 if 语句创建一个循环。但我认为我需要 Char
我正在编写java代码,想知道为什么这段代码的输出是x。我本来期待 t,因为它是第 5 个字母。 public class StringBufferDemo{ public static vo
快速提问。我在程序中有这段代码: input = JOptionPane.showInputDialog("Enter any word below") int i = 0; for (int j
我正在做一个分配,它接受两个无限的未分配整数(表示为字符串),并将它们相加。我的 add 方法让我感到悲伤。我不断收到此错误,但不知道为什么。 这是给我带来麻烦的代码部分: for(int i = 0
我编写了一个小程序,其中有一个带有字符串名称的二维数组。在嵌套的 for 循环中,我检查数组每个元素中的第一个字符。如果第一个字符是“A” || 'E' || ‘我’|| 'O'|| 'U',我使用
我试图找出“哪个 5 位数字乘以 4 可以得到它的倒数?”使用此代码但出现错误: Exception in thread "main" java.lang.StringIndexOutOfBounds
我正在审查一个尝试确定字符串中的所有字符是否唯一的问题。这是算法 public static boolean unique(String s) { if(s.length() > 128) {
我的代码遇到一些问题,我正在尝试测试 char 中的位置是否等于整数。我的设置方式如下: for(int i = 0; i < str.length(); i++) { if(
下面是我的简单程序,它将字符串转换为数组元素,charAt(i) 没有返回根据文档应该返回的内容。我的代码是 public class StringToArray { public stati
我正在编写一种编程语言,在 javascript 中分号是分号,而我的是斜杠。 代码如下: document.getElementsByTagName("input")[0].addE
我正在使用以下函数获取 Google map 上的海拔高度: function getElevation(event) { var locations = []; var clicke
程序的这一部分给我带来了麻烦。该文件正在被程序正确接收。没有 charAt 方法程序运行完美。我不太确定问题出在哪里。显然这不是整个程序,只是给我一个错误的部分。 错误: java.lang.Stri
现在这段代码在一台机器上工作得很好,但在另一台机器上只是简单地拒绝输出正确的结果。 这是一个简单的 Initials 输出请求。我对代码没有疑问,但我的问题是为什么它输出数字而不是字母? 当使用 Ec
我正在尝试将字符串拆分为两个字符的 block 。然后我想找到这两个字符在字符数组中的位置。我如何在 Java 中执行此操作 for (int i = 0; i < message.lengt
我是一名优秀的程序员,十分优秀!