代码如下,任务要求是连接该sql server数据库,并以5秒为周期读取表中全部数据,出现了如下错误
import com.sun.org.apache.bcel.internal.generic.ACONST_NULL;
import java.sql.*;
import java.util.Timer;
import java.util.TimerTask;
public class MyMain {
public static String url="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=isms_data)";//定义静态变量数据库地址
public static String username="sa";//定义静态变量用户名
public static String password="123456";
public static Connection conn;//定义静态变量con
public static Statement sta;
public static ResultSet res;
public static void main(String[] args) {
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//加载驱动
Connection conn= DriverManager.getConnection(url, username, password);//创建conn
Statement sta=conn.createStatement();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
Timer timer=new Timer();
timer.schedule(new MyTimerTask1(),0,5000);
}
}
class MyTimerTask1 extends TimerTask{
public void run(){
Statement sta=MyMain.sta;
ResultSet resultSet=sta.executeQuery("selcet * from im_Alert202112");
}
}
Unhandled exception: java.sql.SQLException:29
连接数据库在MyMain类创建的Statement对象可以在run方法中使用
有没有其他错误信息,截图发出来看下。
删除main函数的Connection ,Statement ,修改如下:
public static void main(String[] args) {
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//加载驱动
conn= DriverManager.getConnection(url, username, password);//创建conn
sta=conn.createStatement();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
Timer timer=new Timer();
timer.schedule(new MyTimerTask1(),0,5000);
}
1、Timer中引用的 MyMain.sta 是没有被赋值(即 空null),try {}中的 sta 变量作用域覆盖了。
2、静态修饰符static 不要乱用。
3、每次获取全量数据,如果只是测试玩倒也没啥。建议,从开始学编程就养成好的习惯,写些有一定意义的SQL。
public class MyMain {
public static String url = "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=isms_data)";//定义静态变量数据库地址
public static String username = "sa";//定义静态变量用户名
public static String password = "123456";
// public static Connection conn; //定义静态变量con
// public static Statement sta;
public Statement sta;
// public static ResultSet res;
public static void main(String[] args) {
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//加载驱动
Connection conn = DriverManager.getConnection(url, username, password);//创建conn
// Statement sta = conn.createStatement();
sta = conn.createStatement();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
Timer timer = new Timer();
timer.schedule(new MyTimerTask1(), 0, 5000);
}
}
class MyTimerTask1 extends TimerTask {
public void run() {
Statement sta = MyMain.sta;
ResultSet resultSet = sta.executeQuery("selcet * from im_Alert202112");
}
}