首先要建立一个名为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();
}
}
}