首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么‘没有选择数据库’SQLException?

问为什么‘没有选择数据库’SQLException?
EN

Stack Overflow用户
提问于 2009-02-25 05:57:47
回答 4查看 15.2K关注 0票数 6

为什么这个程序在第二次进入do while循环时没有执行,以及为什么它给出异常“java.sql.SQLException: MySQLmysqld-5.0.51a-community- not没有选择数据库”。

代码语言:javascript
复制
//import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
import java.util.Vector;

public class DataBase {

    public void LoadDriver() {

        // Load the JDBC-ODBC bridge driver
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        } catch (ClassNotFoundException ee) {
            ee.printStackTrace();
        }
    }

    // 2.open a data source name by means of the jdbcodbcdriver.

    static void connect() throws SQLException {

        // Connect to the database
        Connection con = DriverManager.getConnection("jdbc:odbc:MySQL", "root", "admin");
        Statement stmt = con.createStatement();
        // Shut off autocommit
        con.setAutoCommit(false);


        System.out.println("1.Insert 2.Delete 3.Update 4.Select");
        Scanner s = new Scanner(System.in);
        int x;
        x = s.nextInt();

        String query; // SQL select string
        ResultSet rs; // SQL query results
        boolean more; // "more rows found" switch
        String v1, v2; // Temporary storage results

        Vector<Object> results = new Vector<Object>(10);


        if (x == 1) {

            try {
                stmt.executeUpdate("INSERT INTO employee( emp_id,emp_name ) VALUES ( '122','shiva' ) ");
            } catch(Exception e){System.out.println("Exception " +e);e.printStackTrace();}
        }

        if (x == 2) {

            try {
                stmt.executeUpdate("DELETE from employee where emp_id='102' ");
            }catch(Exception e){System.out.println("Exception "+e);e.printStackTrace();} 
        }

        if (x == 3) {

            try {
                stmt
                        .executeUpdate("UPDATE employee SET emp_name = 'madavan' where emp_id='20'; ");
            } catch(Exception e){System.out.println("Exception "+e);e.printStackTrace();} 
        }


        query = "SELECT * FROM employee ";
        try {
            rs = stmt.executeQuery(query);
            // Check to see if any rows were read
            more = rs.next();
            if (!more) {

                System.out.println("No rows found.");
                return;
            }

            // Loop through the rows retrieved from the query
            while (more) {

                v1 = "ID: " + rs.getInt("emp_id");
                v2 = "Name: " + rs.getString("emp_name");

                System.out.println(v1);
                System.out.println(v2);
                System.out.println("");

                results.addElement(v1 + "\n" + v2 + "\n");

                more = rs.next();
            }
            rs.close();

        } catch (SQLException e) {
            System.out.println("" + results.size() + "results where found.");
        } 
        finally{stmt.close();}
    }

    public static void main(String[] args) throws SQLException {
        String str = "y";
        do {
            DataBase s = new DataBase();
            s.LoadDriver();
            DataBase.connect();
        Scanner sc = new Scanner(System.in);
        System.out.println("DO u Want to PROCEED TO QUERY : ");
        str = sc.next();
        } while (str !="n");
    }

}
EN

回答 4

Stack Overflow用户

发布于 2009-02-25 06:22:57

除非必须使用jdbc/odbc驱动程序,否则我会直接使用mysql jdbc驱动程序。你可以从mysql上免费下载。

然后

代码语言:javascript
复制
public void LoadDriver() {

        // Load the JDBC-ODBC bridge driver
        try {
                Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException ee) {
                ee.printStackTrace();
        }
}

static void connect() throws SQLException {

        // Connect to the database
        Connection con = DriverManager.getConnection("jdbc:mysql:host/databasename", "root", "admin");
        Statement stmt = con.createStatement();
...
票数 6
EN

Stack Overflow用户

发布于 2009-02-25 06:07:38

仅从异常的角度来看..我猜你没有指定数据库。如何在不告诉表从哪个模式选择的情况下对表执行select操作?这通常在连接字符串中设置。

票数 2
EN

Stack Overflow用户

发布于 2009-02-25 08:08:33

ODBC源是否实际设置为选择数据库?例如:您可以通过另一个ODBC客户端工具访问数据库吗?

如果需要在JDBC字符串中显式选择数据库,可以使用‘database’参数来实现。

但是在ODBC设置中选择数据库会更常见。事实上,正如克林特提到的那样,使用普通的ODBC JDBC驱动程序而不是MySQL会更常见。

while (字符串!="n")

That's not how you compare strings in Java.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/584870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档