Я создал имя таблицы EventLog7 в SQL Server 2008:
create table EventLog7(
EventId int not null identity(1,1),
EventDate datetimeconstraint DF_myDate DEFAULT (getdate()),
ObjectId varchar(50),
Name varchar(50),
Value varchar (50)
)
В NetBeans есть три jtextполя, которые помогают вставлять данные в таблицу EventLog SQL (ObjectId, Name, Value), когда я нажимаю кнопку. Упомянутый ниже код кнопки действия:
String objectid=jTextField1.getText();
String value=jTextField2.getText();
String name=jTextField3.getText();
try{
DoConnect();
st=conn.createStatement();
String sql = "insert into EventLog7 values('"+objectid+"','"+name+"','"+value+"')";
pst = conn.prepareStatement(sql);
pst.execute();
rs=st.executeQuery("select * from EventLog7");
jTable1.setModel(net.proteanit.sql.DbUtils.resultSetToTableModel(rs));
}
catch(Exception e){
JOptionPane.showMessageDialog(null,e);
}
Итак, я хочу, чтобы, когда я вставляю значения ObjectId, Name, Value в три jtextfiles, тогда таблица Sql автоматически вставляла дату и время с этими данными.
Но по моему коду выдает ошибку
Column names or number of supplied values does not match table definition
Поэтому, пожалуйста, предоставьте мне правильный путь.




String sql = "insert into EventLog7 values('"+objectid+"','"+name+"','"+value+"')";
линия будет
String sql = "insert into EventLog7(ObjectId, Name, Value, EventDate) values('"+objectid+"','"+name+"','"+value+"',GETDATE())";
Я не знаю, как генерируются идентификаторы sql-server , вам также может потребоваться установить его, если это не автоматическое назначение/увеличение.
И я могу сказать, что это небезопасно, вам нужно использовать ?s вместо ваших переменных и использовать методы set для их установки, как напоминает a_horse_with_no_name. Используйте то, что я предложил, только для устранения ошибки, которая у вас есть сейчас.
я вставил ваш код, затем он показывает ошибку, неправильный синтаксис рядом с «батареей», пожалуйста, предоставьте мне полный код кнопки действия
в вашем коде нет чего-то вроде battery, отличается ли он от того, что вы просили
И что я должен делать?
Смотрите обновленный запрос, я забыл 's, теперь они там
Пожалуйста, поднимитесь или примите ответ, который вам поможет. Спасибо.
Делайте НЕТ конкатенацию входных данных в такие операторы SQL. Узнайте, как правильно использовать
PreparedStatementи передавать значения черезResultSet.setInt()илиsetString().