import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import com.mysql.jdbc.Connection;
public class one implements ActionListener{
JFrame frame = new JFrame("ghar hisab");
JButton b = new JButton("save");
Panel p = new Panel();
JTextField f = new JTextField(20);
JTextField f1 = new JTextField(20);
JLabel l = new JLabel("Enter the first name");
JLabel l1 = new JLabel("Enter the last name");
String s1,s2;
String ppl;
int people;
void display() throws Exception{
p.add(l);
p.add(f);
p.add(l1);
p.add(f1);
p.add(b);
frame.setSize(400,400);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(p);
s1=f.getText();
s2=f1.getText();
//Class.forName("com.mysql.jdbc.Driver");
//Connection con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/people","root","desire");
//Statement stat = con.createStatement();
// String s3= "insert into name values s1 + s2";
// stat.executeUpdate(s3);
// stat.executeQuery("insert into name (first,last) values('"+s1+"','"+s2+"')");
b.addActionListener(this);
// ResultSet rs= stat.executeQuery("insert into name (first,last) values("arun","yadav"));
//while(rs.next()){
// System.out.println(rs.getString(1)+" "+rs.getString(2));
// }
}
@Override
public void actionPerformed(ActionEvent event) {
// TODO Auto-generated method stub
try{
Class.forName("com.mysql.jdbc.Driver");
Connection con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/people","root","desire");
Statement stat = con.createStatement();
stat.executeQuery("insert into name (first,last) values('"+s1+"','"+s2+"')");
}
catch(Exception e){
System.out.println("the exception caught is "+e);
}
}
}
回答
沒有堆棧跟蹤,很難說。要麼你沒有建立連接,或者你的SQL中的值導致查詢出錯(可能一個或兩個都爲空)。我建議在con上放一個斷點,並查看該對象是否爲空。並且看看s1和s2是什麼。下面,我添加了兩行。你需要關閉你的陳述和連接。
public void actionPerformed(ActionEvent event) {
// TODO Auto-generated method stub
try
{
Class.forName("com.mysql.jdbc.Driver");
Connection con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/people","root","desire");
Statement stat = con.createStatement();
stat.executeQuery("insert into name (first,last) values('"+s1+"','"+s2+"')");
stat.close();
con.close();
}
catch(Exception e){
System.out.println("e.fillInStackTrace:" + e.fillInStackTrace());
System.out.println("e.getCause:" + e.getCause());
System.out.println("e.getLocalizedMessage:" + e.getLocalizedMessage());
System.out.println("e.getMessage.:" + e.getMessage());
System.out.println("e.getStackTrace:" + e.getStackTrace());
System.out.println("e.initCause:" + e.initCause());
System.out.println("e.printStackTrace:" + e.printStackTrace());
System.out.println("e.toString:" + e.toString());
}
}
我注意到你導入PreparedStatement,但你的代碼從來沒有使用它。那麼,我不太瞭解SQL,但是當你使用PreparedStatement時,你不太可能遇到問題。下面是插入一個簡單的例子:
String sql = "INSERT INTO Name (First, Last) VALUES (?, ?)";
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setString(1, s1);
stmt.setString(2, s2);
stmt.executeUpdate();
我把uppercasing表名和列名,因爲這是大多數人會創建表名的方式的自由。
編輯:
s1=f.getText();
s2=f1.getText();
當該代碼被執行文本字段不包含任何值,因爲用戶沒有機會進入任何數據到文本字段呢。這兩條語句需要移至actionPerformed()方法。
用stat.executeUpdate替換stat.executeQuery可解決異常問題。數據庫表中的新條目也被創建,但是在「第一個」和「最後」字段中沒有顯示任何內容。 –
@Apurva,確保變量s1和s2實際上包含值。看我的編輯。 – camickr
- 1. SQL異常:java.sql.SQLException:沒有找到數據
- 2. 在保存數據時發生Mysql數據庫異常
- 3. 將圖保存到MySQL數據庫
- 4. Nullpointer異常,當試圖插入分析數據到數據庫
- 5. 嘗試保存到SQL數據庫時參數異常
- 6. 試圖從mysql導入索引數據到apache solr,但得到異常
- 7. NullPointerException異常當我嘗試將數據插入到數據庫中的線程
- 8. 我無法將我的PHP數據保存到MySQL數據庫
- 9. Hibernate查詢超時異常 - 我無法將數據保存到數據庫
- 10. 試圖保存Excel - 從HRESULT異常:0x800A03EC
- 11. 當試圖將圖像保存到MemoryStream中時發生GDI +異常的一般錯誤
- 12. MySQL x Java - 引發異常
- 13. 我收到錯誤,當我想查詢保存MySQL數據庫
- 14. 當試圖使用SMO.Backup.AddDevice Powershell引發轉換異常
- 15. rails自動保存關聯引發異常並保存
- 16. 將我的cookie數據保存到MySQL數據庫?
- 17. 引發異常的測試函數
- 18. NullPointerException異常試圖連接到MySQL
- 19. 當試圖保存
- 20. getting java.sql.SQLException:連接到遠程mysql數據庫時拒絕訪問用戶異常
- 21. 嘗試將數據填充到DataTable時始終發生異常
- 22. BizTalk 2013 R2 XLANG - 將狀態持久保存到數據庫時發生異常
- 23. ArrayIndexOutOfBoundsException異常試圖訪問我得到下面的代碼數組索引越界異常數據
- 24. 靜態方法引發NullPointerException異常,當我試圖訪問其內螺紋
- 25. Android將數據保存到MySQL
- 26. 將mysql結果保存到數據表
- 27. 將數據從Listview保存到MySQL
- 28. MySQL將文件保存到數據庫
- 29. PHP MySQL:將PDF保存到數據庫
- 30. 將JPanel保存到mySQL數據庫(Java)
從異常中獲取堆棧跟蹤將幫助您調試此問題。 –
信息不足 - 請發佈堆棧跟蹤。不要打印該信息 - 信息量少於可獲得的信息量。 – duffymo
用stat.executeUpdate替換stat.executeQuery可解決異常問題。數據庫表中的新條目也被創建,但是在「第一個」和「最後」字段中沒有顯示任何內容。 –