我已经在SQL Server 2008中创建了一个表名EventLog7
:
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中,当我按下按钮时,三个jtextfields有助于将数据插入到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);
}
所以,我希望当我在三个jtextfiles中插入ObjectId,Name,Value的值时,Sql表将使用这些数据自动插入日期和时间。
但是根据我的代码,它显示了错误
列名或提供的值数与表定义不符
所以请给我正确的方法。
答案 0 :(得分:0)
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是如何生成ID的,如果不是自动分配/递增的话,您可能还需要设置它。
我可以说这是不安全的,您需要使用?
而不是变量,并使用set方法将它们设置为a_horse_with_no_name提醒。请使用我仅建议的内容减轻您现在遇到的错误。