Categorías
database

Código Java para conectar la base de datos Mysql y usar el tipo Arraylist

Para usar JDBC y ArrayList, hago el siguiente ejemplo para ayudarme a mí mismo. Los siguientes son los pasos:

  • Cree una base de datos «viajes» con una tabla llamada «persona»
  • Definir una clase llamada «Persona» para mapear las columnas de la tabla de personas
  • Conectando la base de datos Mysql
  • Seleccione algunos registros de la base de datos «viajes»
  • Crea objetos basados ​​en cada registro extraído de la tabla «persona»
  • Usando ArrayList of object para almacenar los objetos de Person.
  • Imprima los datos en ArrayList

El siguiente es el código:

Person.java

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
 
package javaapplication1;
 
/**
 *
 * @author wongwong
 */
public class Person {
    private String name;
    private String jobtitle;
    private int frequentflyer;
 
    public int getFrequentflyer() {
        return frequentflyer;
    }
 
    public void setFrequentflyer(int frequentflyer) {
        this.frequentflyer = frequentflyer;
    }
 
    public String getJobtitle() {
        return jobtitle;
    }
 
    public void setJobtitle(String jobtitle) {
        this.jobtitle = jobtitle;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
}

Main.java

package javaapplication1;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javaapplication1.Person;
 
public class Main {
    public static void main(String[] args) throws SQLException {
        ArrayList<Person> personlist = new ArrayList<Person>();
        //List<Person> personlist = new List<Person>();
        try {
            // Step 1: Load the JDBC driver. jdbc:mysql://localhost:3306/travel
            Class.forName("com.mysql.jdbc.Driver");
 
            // Step 2: Establish the connection to the database.
            String url = "jdbc:mysql://localhost:3306/travel";
            Connection conn = DriverManager.getConnection(url, "root", "admin");
            Statement st = conn.createStatement();
            ResultSet srs = st.executeQuery("SELECT * FROM person");
            while (srs.next()) {
                Person person = new Person();
                person.setName(srs.getString("name"));
                person.setJobtitle(srs.getString("jobtitle"));
                person.setFrequentflyer(srs.getInt("frequentflyer"));
                personlist.add(person);
            }
 
            System.out.println(personlist.size());
            System.out.println(personlist.get(1).getName());
            System.out.println(personlist.get(2).getName());
            System.out.println(personlist.get(3).getName());
            System.out.println(personlist.get(4));
 
        //System.out.println(namelist.);
        } catch (Exception e) {
            System.err.println("Got an exception! ");
            System.err.println(e.getMessage());
        }
    }
}

Categorías
database

Prototipo de la clase de base de datos Java

¿Podemos hacer una clase de conexión a la base de datos que nos permita simplemente cambiar el archivo de configuración y luego usar la base de datos? Hice el prototipo de esta clase que es muy simple. Pero la idea es buena, siempre use un archivo jar muy simple para obtener la base de datos de configuración que luego puede realizar operaciones de consulta SQL.

package com.programcreek.db;
import java.sql.*;
 
public class DB {
 
	private Connection conn = null;
 
	public DB(String url, String user_name, String password) {
		try {
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager.getConnection(url, user_name, password);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
 
	public ResultSet runSql(String sql) throws SQLException {
		Statement sta = conn.createStatement();
		return sta.executeQuery(sql);
	}
 
	@Override
	protected void finalize() throws Throwable {
		if (conn != null &amp;&amp; !conn.isClosed()) {
			conn.close();
		}
	}
 
}

Aquí está el código para llamar a la clase DB:

package com.programcreek.test;
 
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
 
import com.programcreek.db.DB;
 
public class Main {
 
	public static void main(String []args){
 
		// to read url, username, password from configuration file
		Properties configFile = new Properties();
		String url = "";
		String user_name = "";
		String password = "";
		String database = "";
		try {
			configFile.load(Main.class.getClassLoader().getResourceAsStream("config.properties"));
			url = configFile.getProperty("url");
			database = configFile.getProperty("database");
			user_name = configFile.getProperty("user_name");
			password = configFile.getProperty("password");
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
 
		//instantiate a DB object
		DB db = new DB(url + database, user_name, password);
		try {
			ResultSet rs = db.runSql("select * from user");
			while(rs.next()){
				System.out.println(rs.getString("user_name"));
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

Este es el prototipo de esta idea, una clase de conexión de base de datos completa debería poder:

1) conecte diferentes bases de datos como SQLServer, Accsss, etc.

2) tiene función como runDB (), que puede realizar operaciones ADD, UPDATE, DELETE usando una matriz. Tome update, por ejemplo, runDB (UPDATE, data), en el que los datos son una matriz de mapeo.

3) tiene función de registro usando lo que mostré en mi publicación anterior.

Categorías
database JSP/JSF

Coloque la conexión de la base de datos en ServletContextListener

ServletContextListener es útil para informar sobre la iniciación y destrucción del contexto. En un sistema web de gestión de contenido típico, normalmente hay una base de datos detrás. El siguiente ejemplo demuestra cómo conectar la base de datos MySQL durante la etapa de inicialización del contexto.

Herramientas y paquetes: eclipse y Conector JDBC MySQL.

1. Cree un proyecto web dinámico TestServlet, importe el archivo .jar del conector al proyecto.

El archivo jar estará en el directorio lib. Cree una base de datos «testdb» y una tabla «usuario». Ponga algunos registros adentro para probar la conexión más tarde.

2. Coloque un elemento de escucha en el descriptor de implementación web.xml y también coloque la configuración de la base de datos en él.

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>TestServlet</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <listener>
    <listener-class>com.programcreek.testservletlistener.myServletListener</listener-class>
  </listener>
  <context-param>
    <param-name>url</param-name>
    <param-value>jdbc:mysql://localhost/</param-value>
  </context-param>
  <context-param>
  	<param-name>database</param-name>
  	<param-value>testdb</param-value>
  </context-param>
  <context-param>
  	<param-name>user_name</param-name>
  	<param-value>xiaoran</param-value>
  </context-param>
  <context-param>
  	<param-name>password</param-name>
  	<param-value>xiaoran</param-value>
  </context-param>
  <servlet>
    <description></description>
    <display-name>testClass</display-name>
    <servlet-name>testClass</servlet-name>
    <servlet-class>edu.uams.testservlet.testClass</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>testClass</servlet-name>
    <url-pattern>/testClass</url-pattern>
  </servlet-mapping>
 
</web-app>

3. Cree una clase de escucha «myServletListener»

package com.programcreek.testservletlistener;
 
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
 
/**
 * Application Lifecycle Listener implementation class myServletListener
 *
 */
public class myServletListener implements ServletContextListener {
 
	/**
     * @see ServletContextListener#contextInitialized(ServletContextEvent)
     */
    public void contextInitialized(ServletContextEvent event) {
 
    	ServletContext sc = event.getServletContext();
 
    	String url = sc.getInitParameter("url");
    	String user_name = sc.getInitParameter("user_name");
    	String password = sc.getInitParameter("password");
    	String database = sc.getInitParameter("database");
    	Database db = new Database(url + database, user_name, password);
    	//System.out.println("in the listener!!");
    	sc.setAttribute("db", db);
 
    }
 
	/**
     * @see ServletContextListener#contextDestroyed(ServletContextEvent)
     */
    public void contextDestroyed(ServletContextEvent arg0) {
        // TODO Auto-generated method stub
    }
 
}

4. Escriba la clase Base de datos que sirve para conectar la base de datos y proporcionar operaciones de base de datos.

package com.programcreek.testservletlistener;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
 
public class Database {
 
	private Connection conn = null;
 
	public Database(String url, String user_name, String password) {
		try {
			Class.forName("com.mysql.jdbc.Driver");
 
			this.conn = DriverManager.getConnection(url, user_name, password);
 
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
 
	public Connection getConnection() {
		return this.conn;
	}
 
	public ResultSet runSql(String sql) throws SQLException {
		Statement sta = conn.createStatement();
		return sta.executeQuery(sql);
	}
}

5. Escriba la clase de Servlet de prueba.

package com.programcreek.testservletlistener;
 
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
//import javax.servlet.ServletContext;
 
/**
 * Servlet implementation class testClass
 */
public class testClass extends HttpServlet {
	private static final long serialVersionUID = 1L;
 
	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
 
		response.setContentType("text/html");
 
		Database db = (Database) getServletContext().getAttribute("db");
		PrintWriter out = response.getWriter();
 
		String sql = "select * from user";
		ResultSet rs;
		try {
			rs = db.runSql(sql);
 
			while(rs.next()){
				out.println(rs.getString("user_name"));
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
 
	}
 
	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}
 
}

6. Compile el proyecto e impleméntelo en tomcat 6.

Cree el proyecto y copie los archivos en el directorio «webapps» de tomcat.
El directorio y los archivos finalmente se verían como el siguiente directorio:
-TestServlet

— index.html

— WEB-INF

————— clases
————————— com
———————————— programcreek
————————————————– —– testservletlistener

————————————————– —————————————– Database.class

————————————————– —————————————– myServletListener.class

————————————————– —————————————– testClass.class

————— lib

————————— conector-mysql-java-5.1.7-bin.jar

Eso es. Hice esto solo por diversión, y no estoy seguro de que sea la forma correcta de conectar la base de datos.

Categorías
database

Java connect MS SQL Server mediante autenticación de Windows

Para conectar MS SQL Server mediante la autenticación de Windows, el primer paso es configurar ODBC. Puede ir al Panel de control -> Herramientas administrativas -> ODBC. Agregue un nuevo DSN para conectar MS SQL Server usando la cuenta de autenticación de Windows siguiendo la configuración del asistente.

El segundo paso es similar al uso de la autenticación de SQL Server. El único cambio es que la cadena de conexión es: jdbc: odbc: dsn-name. ¡Ya no es necesario usar nombre de usuario / contraseña, porque ya está conectado al servidor!

Aquí hay un código de muestra de una clase de base de datos que usa autenticación de Windows:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
 
public class Database {
	public Connection conn = null;
	private String dbName = null;
 
	public Database(){
	}
 
	public Database(String dbName, String dbURL){
		this.dbName = dbName;
		try {
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			this.conn = DriverManager.getConnection(dbURL);//here put the new simple url.
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
 
	public ResultSet runSql(String sql) throws SQLException {
		Statement sta = conn.createStatement();
		return sta.executeQuery(sql);
	}
 
}

El archivo jar se puede descargar aquí: http://dev.mysql.com/downloads/connector/j/

Categorías
database

Código Java para conectar MS SQL Server mediante la autenticación de SQL Server

En primer lugar, deberá agregar un archivo jar a la biblioteca de su proyecto como controlador de SQL Server 2000 para el servicio JDBC. Mi objetivo es SQL Server 2000, requerirá el archivo jar llamado «sqljdbc4.jar». Esto no es compatible con el sitio web de Microsoft ahora, puede descargarlo aquí. Para otras versiones de SQL Server, aquí está la Enlace del controlador SQL Server 2000 para el servicio JDBC.

El siguiente es el código para la conexión MS SQL Server y seleccione algunos registros de una tabla de prueba.

import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
 
public class Main {
 
	public static void main(String[] args) throws SQLException, ClassNotFoundException {
		Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");	
		Connection conn = DriverManager.getConnection("jdbc:sqlserver://HOSP_SQL1.company.com;user=name;password=abcdefg;database=Test");
		System.out.println("test");
		Statement sta = conn.createStatement();
		String Sql = "select * from testing_table";
		ResultSet rs = sta.executeQuery(Sql);
		while (rs.next()) {
			System.out.println(rs.getString("txt_title"));
		}
	}
}

Categorías
database

Java Insertar carácter especial y en la base de datos MySQL

¿Cómo insertar el «lógico y» (&) en la base de datos MySQL?

Puede intentar escapar del carácter «&», pero no funciona.


Estaba tratando de leer todas las cadenas línea por línea desde el archivo txt a la base de datos MySQL. Alguna cadena contiene «&».
Hice lo siguiente:

Statement sta = conn.createStatement();
String sql = "INSERT INTO  `phd`.`School` (`SchoolName` )VALUES ( '"+aLine.trim()+"');";
sta.execute(sql);

Luego intenté escapar «&» usando la clase StringEscapeUtils de Apache’s commons. No funcionó.

En realidad, el problema se puede resolver con la clase PreparedStatement. La declaración preparada no solo puede manejar este problema de escape, sino que también puede ejecutar la declaración de manera eficiente varias veces.

PreparedStatement st = db.conn.prepareStatement("INSERT INTO  `phd`.`School` (`SchoolName` )VALUES ( ?);");
st.setString(1, aLine.trim());
st.executeUpdate();

Categorías
database

Resumen de instrucciones SQL complejas en la base de datos

Base de datos MySQL

Escribir si la instrucción en sql instrucción

-Función de juicio La expresión de juicio puede ser una subconsulta
– if(exp, v1, v2) juzga la condición según exp, true returns v1, false returns v2.
– o y las palabras clave también se pueden añadir a la condición de juicio

select 
IF( 1 > 2, true, false) as `is_biding`,
IF((select count(*) from edu_user where user_id = '0') > 0 OR s.id = '0', s.video_url,null ) as `s.video_url`
from edu_course s where s.id = 0

Uso del caso cuando termine en SQL

SELECT country,
    SUM(CASE WHEN p.sex = '1' THEN p.population ELSE 0 END) AS 'male',
    SUM(CASE WHEN p.sex = '2' THEN p.population ELSE 0 END) AS 'Female'
FROM
    t_b_population p
GROUP BY country;

.