Eclipse编译器错误说连接变量无法解析为类型

时间:2013-08-24 06:21:01

标签: java mysql eclipse

这是我在Eclipse中编写的Java代码,用于从MySQL数据库中检索信息。但编译器发出错误,说conn无法解析为某种类型..任何人都可以告诉我,我可能会做什么? ?

import java.sql.*;

public class plh {

static Connection conn=null;
static Statement s=null;

public static void main(String[] args){


    try {
        Class.forName("com.mysql.jdbc.Driver");
        conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/wonkashop","root", "");
        String st= new String("select * from users;");
        s= new conn.createStatement(st);//ERROR.. why??

    }
    catch (Exception e) {
        System.out.println("Unable to connect to Database");
    }
}

}

6 个答案:

答案 0 :(得分:1)

从您的代码行中删除new关键字。您需要将Statement作为:

 s= conn.createStatement(); // createStatement doesn't take a String argument

DriverManager.getConnection()已经返回Connection个对象,您已使用标识符conn引用该对象,因此使用它来获取Statement

如果要传递sql查询字符串,请使用PreparedStatement而不是Statement。 那是Connection#prepareStatement(sql)

声明:

final String st= "select * from users;";
Statement s = conn.createStatement();
ResultSet rs = stmt.executeQuery(st);

<强>的PreparedStatement:

final String st= "select * from users;";
PreparedStatement preparedStatement = conn.prepareStatement(st);
ResultSet rs = preparedStatement.executeQuery();

答案 1 :(得分:1)

这一行

   s= new conn.createStatement(st);//ERROR.. why??

不需要新的keyword

  Class.forName("com.mysql.jdbc.Driver");
  conn = DriverManager.getConnection(credentials);
  stmt = conn.createStatement();
  ResultSet rs = stmt.executeQuery(st);

答案 2 :(得分:0)

更改此行

s= new conn.createStatement(st);//ERROR.. why??

s= conn.createStatement();

Connection#createStatement

  

返回一个新的默认Statement对象。

答案 3 :(得分:0)

只需conn.createStatement();。不要把new放在这里,因为你没有实例化一个类。

您应该只在类的名称前面写new,因为它会创建该类的对象。但是在这里,conn不是类的名称 - 它只是引用某个类的现有对象的变量的名称。

答案 4 :(得分:0)

    try {
           Class.forName("com.mysql.jdbc.Driver");
           conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/wonkashop", "root", "");
           st= "select * from users";
           s =  conn.createStatement();// fixed
           ResultSet rs = s.executeQuery(st);
           while(rs.next()){
               //Retrieve by column name
               int id  = rs.getInt("id");
               String name = rs.getInt("name");

          }

    }

答案 5 :(得分:0)

我遇到了同样的问题,并且通过互联网进行网上冲浪以获得解决方案而没有成功我将这些进口产品放入其中并且它对我有用。

import java.sql.*;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

我希望这可以帮助更多人。