簡體   English   中英

Eclipse編譯器錯誤說連接變量無法解析為類型

[英]Eclipse Compiler error saying connection variable cannot be resolved to a type

這是我在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");
    }
}

}

從您的代碼行中刪除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();

在這里

   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);

改變這一行

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

s= conn.createStatement();

連接#的createStatement

返回一個新的默認Statement對象。

只是conn.createStatement(); 不要在這里放new ,因為你沒有實例化一個類。

您應該只在類的名稱之前編寫new ,因為它會創建該類的對象。 但是在這里, conn不是類的名稱 - 它只是引用某個類的現有對象的變量的名稱。

    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");

          }

    }

我有同樣的問題,並通過互聯網進行沖浪以獲得解決方案而沒有成功我將這些進口放入其中並且它對我有用。

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

我希望這可以幫助更多的人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM