sql >> Database teknologi >  >> RDS >> Mysql

Eksempler på JDBC-erklæringer – Indsæt, Slet, Opdater, Vælg Record

Denne artikel vil vise dig, hvordan du bruger java.sql.Statement for at udføre indsæt, opdater, slet og vælg SQL DML-kommandoer med eksempler.

1. Brug java.sql.Statement.execute(String sql) til at køre indsæt, opdatering og slet kommando.

/* This method can be used to execute insert, update, delete dml command. */
public void executeSql(String ip, int port, String dbName, String userName, String password, String sql)
{
	/* Declare the connection and statement object. */
	Connection conn = null;
	Statement stmt = null;
	try
	{
		/* Get connection object. */
		conn = this.getMySqlConnection(ip, port, dbName, userName, password);
		
		/* Get statement object. */
		stmt = conn.createStatement();
		
		/* The method can execute insert, update and delete dml command. */
		stmt.execute(sql);
		
		System.out.println("Execute sql successfuly, " + sql);
	}catch(Exception ex)
	{
		ex.printStackTrace();
	}finally
	{
		this.closeDBResource(stmt, conn);
	}
}
     

/* Close statement and connection after use, this can avoid resource waste. */
public void closeDBResource(Statement stmt, Connection conn)
{
	try
	{
		if(stmt!=null)
		{
			stmt.close();
			stmt = null;
		}
		
		if(conn!=null)
		{
			conn.close();
			conn = null;
		}
	}catch(Exception ex)
	{
		ex.printStackTrace();
	}
}

2. Indsæt og returner autogenererede nøgler.

For indsæt kommando, brug java.sql.Statement.execute(String sql, int autoGeneratedKeys) for at indsætte og returnere auto-increment-nøglens værdi, er det id-værdien i dette eksempel.

/* Execute insert command and return the auto generated record id. */
public int executeInsertSql(String ip, int port, String dbName, String userName, String password, String sql)
{
	int ret = -1;
	/* Declare the connection and statement object. */
	Connection conn = null;
	Statement stmt = null;
	try
	{
		/* Get connection object. */
		conn = this.getMySqlConnection(ip, port, dbName, userName, password);
		
		/* Get statement object. */
		stmt = conn.createStatement();
		
		/* The method can execute insert dml command and return auto generated key values. */
		stmt.execute(sql, Statement.RETURN_GENERATED_KEYS);
		
		ResultSet rs = stmt.getGeneratedKeys();
			
		if(rs.next())
		{
			/* Please note the index start from 1 not 0. */
			ret = rs.getInt(1);
		}			
		
		System.out.println("Execute sql successfuly, " + sql);
	}catch(Exception ex)
	{
		ex.printStackTrace();
	}finally
	{
		this.closeDBResource(stmt, conn);
		return ret;
	}
	
}

3. Udfør select SQL-kommando.

/* This method can be used to execute select dml command. */
public List executeSelectSql(String ip, int port, String dbName, String userName, String password, String selectSql)
{
	List ret = new ArrayList();
	/* Declare the connection and statement object. */
	Connection conn = null;
	Statement stmt = null;
	try
	{
		/* Get connection object. */
		conn = this.getMySqlConnection(ip, port, dbName, userName, password);
		
		/* Get statement object. */
		stmt = conn.createStatement();
		
		/* The method can execute select dml command. */
		ResultSet rs = stmt.executeQuery(selectSql);
		
		if(rs!=null)
		{
			while(rs.next())
			{
				int teacherId = rs.getInt("id");
				
				String teacherName = rs.getString("name");
				
				String teahcerEmail = rs.getString("email");
			
				TeacherDTO teacherDto = new TeacherDTO();
				
				teacherDto.setId(teacherId);
				
				teacherDto.setName(teacherName);
				
				teacherDto.setEmail(teahcerEmail);
				
				ret.add(teacherDto);
				
				System.out.println("id = " + teacherDto.getId());
				System.out.println("name = " + teacherDto.getName());
				System.out.println("email = " + teacherDto.getEmail());
				System.out.println("**************************************");
			}
		}
		
		System.out.println("Execute sql successfuly, " + selectSql);
	}catch(Exception ex)
	{
		ex.printStackTrace();
	}finally
	{
		this.closeDBResource(stmt, conn);
		return ret;
	}

}

4. TeacherDTO.java.

Denne klasse bruges til at gemme én registrering af data i lærertabellen.

package com.dev2qa.java.jdbc;

/* This class represent one record in database teacher table. */
public class TeacherDTO {
	
	private int id;
	
	private String name;
	
	private String email;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}
}

5. Komplet eksempelkode.

  1. Dette eksempel vil bruge en MySQL-database test og tabel lærer , læreren tabellen har tre kolonner, de er id , navn, og e-mail . Du kan henvise til JDBC Opret tabeleksempel brugserklæring for at lære mere.
  2. Du kan oprette tabellen lærer i phpMyAdmin. Du skal tilføje et kolonnenavn er id , typen er int, og tjekker A_I afkrydsningsfeltet for at få det til at stige automatisk.

5.1 Eksempel på kodetrin:

  1. Indsæt én post (hej, [email protected]).
  2. Indsæt en anden post (hello1, [email protected]), og returner det automatisk genererede post-id.
  3. Opdater navn til jerry bruger det andet post-id.
  4. Forespørg alle poster i læreren tabel.
  5. Slet registrering, hvilken e-mail er [email protected]
  6. Angiv alle poster i læreren bord igen.
public static void main(String[] args) {
		
	/* Below are db connection required data. */
	String ip = "localhost";
	int port = 3306;
	String dbName = "test";
	String userName = "root";
	String password = "";
	
	/* Create an instance. */
	JDBCStatementExample jdbcStatementExample = new JDBCStatementExample();
	
	/* Insert one record. */
	String insertSql = "insert into teacher(name, email) values('hello','[email protected]')";
	/* Execute the insert command. */
	jdbcStatementExample.executeSql(ip, port, dbName, userName, password, insertSql);
	
	/* Insert another record. */
	insertSql = "insert into teacher(name, email) values('hello1','[email protected]')";
	/* Execute the insert command. */
	int autoGenId = jdbcStatementExample.executeInsertSql(ip, port, dbName, userName, password, insertSql);
	
	/* update record. */
	String updateSql = "update teacher set name = 'jerry' where id = " + autoGenId;
	/* Execute the update command. */
	jdbcStatementExample.executeSql(ip, port, dbName, userName, password, updateSql);
	
	/* select records. */
	String selectSql = "select * from teacher";
	jdbcStatementExample.executeSelectSql(ip, port, dbName, userName, password, selectSql);
	
	String deleteSql = "delete from teacher where email = '[email protected]'";
	jdbcStatementExample.executeSql(ip, port, dbName, userName, password, deleteSql);
	
	/* select records after delete. */
	selectSql = "select * from teacher";
	jdbcStatementExample.executeSelectSql(ip, port, dbName, userName, password, selectSql);
}


/* This method return java.sql.Connection object from MySQL server. */
public Connection getMySqlConnection(String ip, int port, String dbName, String userName, String password)
{
	/* Declare and initialize a sql Connection variable. */
	Connection ret = null;
	
	try
	{
	
		/* Register for mysql jdbc driver class. */
		Class.forName("com.mysql.jdbc.Driver");
		
		/* Create mysql connection url. */
		String mysqlConnUrl = "jdbc:mysql://" + ip + ":" + port + "/" + dbName;
		
		/* Get the mysql Connection object. */
		ret = DriverManager.getConnection(mysqlConnUrl, userName , password);
	}catch(Exception ex)
	{
		ex.printStackTrace();
	}finally
	{
		return ret;
	}
}

Output

<terminated> JDBCStatementExamp|e [Java Application] C:\Java\jrel.B.O_131\bin\javaw.exe [Aug 28, 2017, 7:59:53 PM]
Execute sql successfuly, insert into teacher(name, email) values('hello','[email protected]')
Execute sql successfuly, insert into teacher(name, email) values('hello1','[email protected]')
Execute sql successfuly, update teacher set name = 'jerry' where id = 22
id = 21
name = hello
email = [email protected]
**************************************
id = 22
name = jerry
email = [email protected]
**************************************
Execute sql successfuly, select * from teacher
Execute sql successfuly, delete from teacher where email = '[email protected]'
id = 21
name = hello
email = [email protected]
**************************************
Execute sql successfuly, select * from teacher

  1. Best Practices for Multi-Language Database Design

  2. Sådan begrænser du rækker i et SQL Server-resultatsæt

  3. Oracle DB Server + APEX + ORDS + JasperRapporter fra bunden (del 1)

  4. Spool-kommando:Udskriv ikke SQL-sætning til fil