Хорошо, поэтому я создаю код для кассы, используя доступ MS и Java Netbeans. Программа должна вставить ProductID, Price, количество, total и lastid в таблицу AdminSales, но всякий раз, когда я запускаю программу, она сообщает, что данные таблицы только читаются. Кто-нибудь может мне помочь? Вставка в первую базу данных работает, но я не могу заставить ее вставить ее в таблицу AdminSales, пожалуйста, это для моего IA, поэтому любая помощь будет очень признательна.
private void sales()
{
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd");
LocalDateTime now = LocalDateTime.now();
String date = dtf.format(now);
String subtot = txtsub.getText();
String pay = txtpay.getText();
String bal = txtbal.getText();
int lastinsertid = 0;
try {
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
conn=DriverManager.getConnection("jdbc:ucanaccess://C:\\Users\\cnoye\\Documents//mydb.accdb"); //connect to database
String query = "insert into Sales(Date,Subtotal,Pay,Balance)values(?,?,?,?)";
insert = conn.prepareStatement(query,Statement.RETURN_GENERATED_KEYS);
insert.setString(1, date);
insert.setString(2, subtot);
insert.setString(3, pay);
insert.setString(4, bal);
insert.executeUpdate();
ResultSet genteratedKeyResult = insert.getGeneratedKeys();
if (genteratedKeyResult.next())
{
lastinsertid = genteratedKeyResult.getInt(1);
}
int row = jTable1.getRowCount();
String query1 = "insert into AdminSales(SalesID,ProductID,Price,Quantity,Total)values(?,?,?,?,?)";
insert = conn.prepareStatement(query1);
String ProductID = "";
String price = "";
String qty = "";
double total=0;
for(int i = 0; i<jTable1.getRowCount(); i++)
{
ProductID = (String)jTable1.getValueAt(i, 0);
price = (String)jTable1.getValueAt(i, 3);
qty = (String)jTable1.getValueAt(i, 2);
total= (double)jTable1.getValueAt(i, 4);
insert.setInt(1, lastinsertid);
insert.setString(2, ProductID);
insert.setString(3, price);
insert.setString(4, qty);
insert.setDouble(5, total);
insert.executeUpdate();
}
insert.addBatch();
JOptionPane.showMessageDialog(this, "Record Saved");
} catch (ClassNotFoundException ex) {
Logger.getLogger(Checkouttest.class.getName()).log(Level.SEVERE, null, ex);
JOptionPane.showMessageDialog(this, ex);
} catch (SQLException ex) {
Logger.getLogger(Checkouttest.class.getName()).log(Level.SEVERE, null, ex);
JOptionPane.showMessageDialog(this, ex);
}
}
Обычно в Windows, если файл доступен только для чтения, он открывается в режиме монопольной записи другой программой или у вас нет прав на запись в файловой системе NTFS для файла / папки. Закройте программу и проверьте, можете ли вы переименовать файл в проводнике Windows.