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의 값으로 인해 쿼리에 오류가 발생했습니다 (하나 또는 둘 다 null 임). 나는 con에 중단 점을 넣고 객체가 null인지 확인하는 것이 좋습니다. 또한 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());
}
}
stat.executeUpdate로 stat.executeQuery를 바꾸면 예외 문제가 해결됩니다. 데이터베이스 테이블의 새 항목도 만들어 지지만 "첫 번째"및 "마지막"필드에는 아무 것도 표시되지 않습니다. –
"첫 번째"및 "마지막"필드를 말하면 삽입이 완료된 후 데이터베이스를 쿼리하고 있습니까? 다음과 같이 : SELECT * FROM [name] ??? – MacGyver
사용자 (루트)가 INSERT 명령을 수행 할 수있는 적절한 권한을 가지고 있습니까? 상상하기 때문에, 근본적이긴하지만 꼭 확인하고 싶었습니다. 해당 필드의 SQL 데이터 유형이 Java 코드에서 보내는 데이터와 일치합니까? – MacGyver
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. 안드로이드가 데이터를 저장하려고 할 때 작동하지 않습니다.
- 2. FileUpload1.PostedFile.FileName 예외가 throw됩니다
- 3. COM 라이브러리를 호출 할 때 서비스에서 예외가 throw됩니다.
- 4. ICustomTypeDescriptor 구현시 인수 예외가 throw됩니다.
- 5. NIB를로드 할 때 NSInternalConsistencyException이 throw됩니다.
- 6. DataGridView.CurrentCellDirtyStateChanged 메서드를 호출 할 때 InvalidProgramException이 throw됩니다.
- 7. Null 포인터 예외가 getConnection()에 throw됩니다.
- 8. NSMutableArray removeObjectAtIndex : 잘못된 인수 예외가 throw됩니다.
- 9. Silverlight에서 Java 웹 서비스를 호출하면 예외가 throw됩니다.
- 10. C# RSA 암호화/복호화 예외가 throw됩니다.
- 11. 네이티브 dll을로드 할 때 ExecutionEngineException이 throw됩니다.
- 12. java.sql.SQLException : 데이터베이스 잠김
- 13. z : Id = ""(WCF 메시지 로그). deserializing 할 때 DataContractSerializer 예외가 throw됩니다.
- 14. '문자가 포함 된 데이터를 추가 할 때 MSAccess에서 예외가 발생했습니다.
- 15. 데이터를 DataTable에 채우려 할 때 항상 예외가 발생합니다.
- 16. Android : SocketException HttpURLConnection.getOutputStream()을 시도 할 때 throw됩니다.
- 17. java.sql.SQLException : 큰 결과 집합에 액세스 할 때 Closed Connection
- 18. 레일 - 프로젝트를 저장하려고 할 때 중첩 된 모델
- 19. 일반 GDI + 오류 (윈도우 7 64) 이미지를 저장하려고 할 때
- 20. Redis가 저장하려고 시도 할 때 오류를 반환 함
- 21. S3 스토리지는 나는 다음을 얻을 파일을 저장하려고 할 때
- 22. 아래 코드에서 어댑터를 스피너에 설정하면 null 포인터 예외가 throw됩니다.
- 23. C# OleDb select 쿼리에서 누락 된 연산자 예외가 throw됩니다.
- 24. 서버에서 호스팅 할 때 MEF 예외가 발생했습니다.
- 25. WPF 컨트롤을 직렬화 할 때 예외가 발생했습니다.
- 26. MySQL에 삽입 할 때 오류 발생
- 27. 슬래시를 포함한 데이터를 mysql에 삽입
- 28. 대량 데이터를 MySQL에 가져 오기
- 29. 포함 웹 사이트 내에서 FormsAuthentication을 사용할 때 WCF 4에서 예외가 throw됩니다.
- 30. 파일에 쓰려고 할 때 FileNotFound 예외가 발생했습니다.
예외에서 스택 추적을 얻으면 디버깅에 도움이됩니다. –
정보가 충분하지 않습니다 - 스택 추적을 게시하십시오. 해당 메시지를 인쇄하지 마십시오. 사용 가능한 정보보다 정보가 적습니다. – duffymo
stat.executeUpdate로 stat.executeQuery를 바꾸면 예외 문제가 해결됩니다. 데이터베이스 테이블의 새 항목도 만들어 지지만 "첫 번째"및 "마지막"필드에는 아무 것도 표시되지 않습니다. –