Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java &引用;无法引用非静态变量…”;我的主要方法是什么?_Java_Mysql_Driver - Fatal编程技术网

Java &引用;无法引用非静态变量…”;我的主要方法是什么?

Java &引用;无法引用非静态变量…”;我的主要方法是什么?,java,mysql,driver,Java,Mysql,Driver,我想用一个小程序与我的mysql数据库交互。我已经添加并注入了驱动程序等等。我找到了一个教程并一步一步地遵循它,但java总是抛出一个错误 由于我的“meh”学校知识,我在Java方面不是很先进。有人能告诉我为什么下面的代码会抛出下面的错误吗 import java.sql.*; public class db_test { Statement stmt; ResultSet rs; public static void main(String[] args) {

我想用一个小程序与我的mysql数据库交互。我已经添加并注入了驱动程序等等。我找到了一个教程并一步一步地遵循它,但java总是抛出一个错误

由于我的“meh”学校知识,我在Java方面不是很先进。有人能告诉我为什么下面的代码会抛出下面的错误吗

import java.sql.*;
public class db_test {

  Statement stmt;       
  ResultSet rs;

  public static void main(String[] args) {
    try {
      Class.forName("com.mysql.jdbc.Driver");
      String url     = "jdbc:mysql://localhost:3306/testdb";       
      Connection con = DriverManager.getConnection(url,"test", "1234");        
      stmt = con.createStatement();
      rs = stmt.executeQuery("SELECT name, surname FROM users");
      int anzahlZeilen = stmt.executeQuery("UPDATE users SET name = 'Harry' WHERE surname='Larry' ");
      while (rs.next()){        
        String  name = rs.getString("name");        
        String  surname = rs.getString("surname");        
        System.out.println("Surname: "+surname+" | Name: "+name);        
      }
      con.close();

    } catch(Exception e) {
      System.out.println("Error");
    } finally {
      System.out.println("Finally");

    }
  }
}
错误消息在“stmt=con.createStatement();”处显示:“无法从静态上下文引用非静态变量stmt)”

与stmt和rs交互的所有东西上都会出现相同的错误。 我真的不明白stmt/rs是如何工作的(教程省略了这一点),所以如果有人能告诉我它叫什么,我就可以读一些关于它的内容了


提前感谢。

如果要将以下变量保留在
main
方法之外,请使用
static
关键字声明它们,如下所示:

static Statement stmt;       
static ResultSet rs;

或者,将它们放在
main
方法中。

stmt
不是
static
,也就是说,它是一个实例字段
main
是静态的,因此它不与任何实例关联。因此,缺少一个可访问
stmt
的实例。解决方案:(在您的情况下不太好)创建一个实例;更好的方法是,将两个字段
stmt
rs
声明为
static
Yup,并且这些字段必须在方法中声明。。。。研究什么时候使用静态变量,什么时候不使用静态变量,我想我会把它们放在main中:)谢谢,我想我会把它们放在main中:)