Java连接数据库,并创建数据库,插入,修改,删除,查找数据

首先要建立一个名为qqdata的数据库,里面要有一张table1的表,且要有7个参数,

public class Jdbc {
	public static int comPortnum=8100;
	public String text="",name="",signature="",message="",Avatar="";
	public int portnum;
	public static final int NAME=1,SIGNATURE=2,MESSATE=3,AVATAR=4;
	public static String type[]= {new String(),new String("name"),new String("signature"),new String("message"),new String("Avatar")};
	
	public static void main(String []args)
	{
		Jdbc a = new Jdbc();
		a.connections();
		System.out.println(a.searchData("123456"));
		//a.insertData("1111");
	}
	
//	public Jdbc(String name)
//	{
//		sqlName=name;
//	}
//	public Jdbc() {}
	
	public String sqlName="qqdata";///数据库的名字,取名最好不要有_,-
	public String driver = "com.mysql.cj.jdbc.Driver";
	public String url = "jdbc:mysql://localhost:3306/"+sqlName+"?useUnicode=ture&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false";//?前的sqlName代表连接到哪个数据库
	Connection connection = null;
	Statement stat = null;
 
	public Connection getConn(String database) {///通过连接到原有的数据库而创建新的数据库,和新的表
		String mysqlDriver = "com.mysql.jdbc.Driver";
		String Url = "jdbc:mysql://localhost:3306/mysql?useUnicode=ture&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false";
		String newUrl = "jdbc:mysql://localhost:3306/";
		String username = "root";
		String password = "root";
		Connection conn = null;
		Connection newConn = null;
		try {
			Class.forName(mysqlDriver);
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		try {
			String tableSql = "create table table1 (qqNumber varchar(45) not null primary key,"
					+ "qqPassword varchar(45) not null,"+ "name varchar(45) not null,"+"signature varchar(45) not null,"
					+"message varchar(45) not null,"+ "Avatar varchar(45) not null,"+"portnum varchar(45) not null"+"); ";
			String databaseSql = "create database " + database;
 
			conn = DriverManager.getConnection(Url, username, password);
			Statement smt = conn.createStatement();
			if (conn != null) {
				System.out.println("数据库连接成功!");
 
				newConn = DriverManager.getConnection(newUrl + database+"?useUnicode=ture&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false",
						username, password);
				if(newConn==null)
					smt.executeUpdate(databaseSql);					
				if (newConn != null) {
					System.out.println("已经连接到新创建的数据库:" + database);
 
					///创建表
					Statement newSmt = newConn.createStatement();
					ResultSet rs = newConn.getMetaData().getTables(null, null, "table1", null);
			        if (rs.next()) 
			        	System.out.println(tableSql + "\n表已经创建!");
			        else
			        {
			        	 int i = newSmt.executeUpdate(tableSql);//DDL语句返回值为0;
			        	 if (i == 0) 
			        		 System.out.println("表格创建成功");
			        }
					
				}
			}
 
		} catch (SQLException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		return conn;
	}
	
	public Connection connections() {//连接到数据库
		try {
//			Class.forName(driver).newInstance();
			System.out.println(url);
			connection = DriverManager.getConnection(url,"root","root");//用户名和密码
			System.out.println(connection.toString()+"连接成功");
			return connection;		
		}
		catch(Exception e) {
			e.printStackTrace();
			System.out.println("error:数据库出错");
		}
		return null;
	}
	
	public boolean filterContent(String content)//避免sql注入代码
	{
		String flt ="'|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare|; |or|-|+|,"; 
		String Stringfilter[] = flt.split("\\|"); 
		for(int i=0; i<Stringfilter.length;i++)
		{
			//System.out.println(Stringfilter[i]);
			String oldchar = Stringfilter[i];
			if(content.indexOf(oldchar)==0) 
			{
				JOptionPane.showMessageDialog(null, "输入非法字符"+oldchar, "warning!", JOptionPane.ERROR_MESSAGE);
				return false;///不可用
			}
		}
		return true;///可用
	}

	public void insertData(String QQnumber,String password) {//插入数据
		try 
		{
		    stat = connection.createStatement();
		    String sql = "insert into table1 values('"+QQnumber+"','"+password+"','请输入昵称','请输入个性签名','还未有消息','QQAvatar.jpg','"+Integer.toString(comPortnum)+"')";
		    comPortnum+=2;
		    if(filterContent(QQnumber))
		    	stat.executeLargeUpdate(sql);
		    
		    
		    
		}
		catch(Exception e) {
			e.printStackTrace();
		}
	}
	public void deleteData(int Type,String Data) {//删除数据
		try 
		{
			stat = connection.createStatement();
			String sql = "delete from table1 where "+type[Type]+" ='"+Data+"'";//删除type类型的数据
			if(filterContent(Data))
		    	stat.executeLargeUpdate(sql);
		}
		catch(Exception e) {
			e.printStackTrace();
		}
	}
	public void rewriteData(int Type,String newData,String QQnum) {//修改数据
		try {
			stat = connection.createStatement();
			if(filterContent(newData))
			{
				String sql = "update table1 set "+type[Type]+" = '"+newData+"'where qqNumber = '"+QQnum+"'";
			    stat.executeLargeUpdate(sql);
			}
			
		}
		catch(Exception e) {
			e.printStackTrace();
		}
	}
	public  ResultSet searchData (String QQnum) //通过QQnum这一参数来查找数据
	{
		ResultSet rs=null;
		if(QQnum=="") QQnum=text;
		try 
		{
			stat = connection.createStatement();
			String sql="select * from table1 where qqNumber = "+QQnum;
			if(filterContent(QQnum))
			{	
				rs = stat.executeQuery(sql);
				if(rs.next()==false)
					return null;
				else
					return rs;
			}
		}
		catch(Exception e) 
		{
			e.printStackTrace();
		}
		return rs;
	}
	
	public ResultSet upData (String QQnum) ///更新获取的信息
	{
		ResultSet rs=null;
		try 
		{
			stat = connection.createStatement();
			String sql="select * from table1 where qqNumber="+QQnum;
			if(filterContent(QQnum))
			{
				rs = stat.executeQuery(sql);
				while(rs.next()) 
				{
					this.name=rs.getString(3);  this.signature=rs.getString(4);
					//System.out.println(this.name);
					this.message=rs.getString(5);this.Avatar=rs.getString(6);
					this.portnum= Integer.parseInt(rs.getString(7));
					return rs;
				}
			}
		}
		catch(Exception e) 
		{
			e.printStackTrace();
		}
		return rs;
	}
	public int value(String QQnum,String password) //判断账号密码是否匹配
	{
		//System.out.println("10000");
		try 
		{
			stat = connection.createStatement();
			if(filterContent(QQnum))
			{
				String sql="select * from table1 where qqNumber="+QQnum;
				ResultSet rs = stat.executeQuery(sql);
				while(rs.next()) 
				{
					
					if(rs.getString(2).equals(password))//不可用==,这是判断是否是同一个对象
					{
						return 1;//正确
					}
					else 
						return 0;//错误
				}
			}
		}
		catch(Exception e) 
		{
			e.printStackTrace();
		}
		return -1;//找不到账号
	}

	public void closeconnections() {//断开数据库
		try {
			connection.close();
		}
		catch(SQLException e){
			System.out.println("关闭连接失败");
			e.printStackTrace();
		}
	}
	
	
	
}

发布了95 篇原创文章 · 获赞 7 · 访问量 8443

猜你喜欢

转载自blog.csdn.net/Spidy_harker/article/details/103357297