为了账号安全,请及时绑定邮箱和手机立即绑定

java:不能从静态上下文中引用非静态变量错误

java:不能从静态上下文中引用非静态变量错误

狐的传说 2019-10-22 22:24:03
以下代码在变量上产生了错误,con2说  "non-static variable con2 cannot be referenced from a static context Error."我用Google搜索解决方案,并且他们暗示该变量尚未初始化以使方法可用。我初始化不正确吗?我也尝试过将事情改为公开,但这也无济于事。import java.io.*;import java.net.*;import java.sql.*;import java.sql.CallableStatement;import java.sql.ResultSet;import java.sql.PreparedStatement;import net.sourceforge.jtds.jdbcx.JtdsDataSource;import net.sourceforge.jtds.jdbc.Driver;class testconnect {      private java.sql.Connection con2 = null;     private final String url2 = "jdbc:jtds:sqlserver://";     private final String serverName= "SQL01";     private final String portNumber = "2677";     private final String databaseName= "App";     private final String userName = "bob";     private final String password = "boob";     private final String selectMethod = "cursor";       private String getConnectionUrl2(){        System.out.println("initalizing jtds");          //String returnVal = url+serverName+":"+portNumber+";databaseName="+databaseName+";user="+userName+";password="+password+";instance="+instance+";";          String returnVal = url2+serverName+":"+portNumber+"/"+databaseName+";user="+userName+";password="+password;          System.out.println("url2: " + returnVal);          return returnVal;     }     public static void main (String[] args) {          con2 = java.sql.DriverManager.getConnection(getConnectionUrl2());     } } //end class 
查看完整描述

3 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

Java有两种变量

a)
班级级别(静态):
每个班级一个班级。假设您有学生班级,并且将名称定义为静态变量。现在无论您创建多少个学生对象都将具有相同的名称。 

对象级别:
它们属于每个对象。如果名称是非静态的,则所有学生可以使用不同的名称。

b)
班级级别:
此变量在班级加载时初始化。因此,即使未创建任何学生对象,您仍然可以访问和使用静态名称变量。

对象级别:创建新对象时,它们将被初始化,例如new();。 

C)
您的问题:您的类刚刚加载到JVM中,并且您已经调用了它的主要(静态)方法:合法。

现在,您要调用对象变量:对象在哪里?

您必须创建一个对象,然后只有您才能访问对象级别的变量。


查看完整回答
反对 回复 2019-10-22
  • 3 回答
  • 0 关注
  • 516 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信