刚刚接触java,不太明白,java 怎么和sql数据库连接啊,连接数据库的代码怎么写?请个位指点一二!

解决方案 »

  1.   

    //自己写的代码,但连不上sql,有出错信息,但我看不明白,不知道哪里出错啦,咋改呢?
    package db;
    import java.sql.*;public class ConnectSql {
    String servername="542D0C50072D4DE";
    String url = "jdbc:odbc:sqlserver";
    String sDBDriver="sun.jdbc.odbc.JdbcOdbcDriver";
        Connection connect=null;
          ResultSet rs=null;
        
        public ConnectSql(){
         try{
         Class.forName(sDBDriver);
         }catch(java.lang.ClassNotFoundException e){
         System.err.println(e.getMessage());
         }
        }
       public ResultSet query(String sql){
       try{
       connect=DriverManager.getConnection(url,"sa","");
       Statement stmt = connect.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
       rs = stmt.executeQuery(sql);
       }
       catch(SQLException ex){
       ex.printStackTrace();
       }
       return rs;
       }
       public int update(String sql){
       int result=0;
       Statement stmt=null;
       try{
       connect=DriverManager.getConnection(url,"sa","");
       stmt=connect.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
       result=stmt.executeUpdate(sql);
       return result;
       }catch(SQLException ex){
       ex.printStackTrace();
       }finally{
       try{
       stmt.close();
       connect.close();
       }catch(SQLException ex){
       ex.printStackTrace();
       }
       }
       return result;
       }
       public boolean close(ResultSet rs){
       boolean ret=false;
       Statement st=null;
       Connection con=null;
       try{
       st=rs.getStatement();
       con=st.getConnection();
       rs.close();
       st.close();
       con.close();
       ret=true;
       }catch(SQLException e){
       e.printStackTrace();
       }
       return ret;
       }
       
       //测试一下
       public static void main(String [] ss){
       ConnectSql cs=null;
       cs=new ConnectSql();
       ResultSet rs=null;
       rs=cs.query("select * from Users");
       try{
       while(rs.next()){
       System.out.println(rs.getString("UserName"));
      // System.out.print("***");
       System.out.println(rs.getString("Pwd"));
      // System.out.print("***");
       System.out.println(rs.getInt("User_Type"));
       }
       }catch(SQLException e){
       e.printStackTrace();
       }   
       }

    }//出错信息
    java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]对象名 'Users' 无效。
    at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958)
    at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)
    at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3111)
    at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
    at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253)
    at db.ConnectSql.query(ConnectSql.java:22)
    at db.ConnectSql.main(ConnectSql.java:71)
    java.lang.NullPointerException
    at db.ConnectSql.main(ConnectSql.java:73)
    Exception in thread "main" 
      

  2.   

    testsqlserver.jsp如下:
    <%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="java.sql.*"%>
    <html>
    <body>
    <%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
    String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
    //pubs为你的数据库的
    String user="sa";
    String password="";
    Connection conn= DriverManager.getConnection(url,user,password);
    Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
    String sql="select * from test";
    ResultSet rs=stmt.executeQuery(sql);
    while(rs.next()) {%>
    您的第一个字段内容为:<%=rs.getString(1)%>
    您的第二个字段内容为:<%=rs.getString(2)%>
    <%}%>
    <%out.print("数据库操作成功,恭喜你\");%>
    <%rs.close();
    stmt.close();
    conn.close();
    %>
    </body>
    </html>
      

  3.   

    对象名 'Users' 无效
    你数据库里面有没有Users这个表啊
      

  4.   

    wonderful_life () 你好当你确认表名用户名等连接文字列属性之后,仍然发生问题的话。也许是这一句的问题,请确认。
    Class.forName(sDBDriver);类对象是程序的一部分,每个类都有一个Class对象,即每当编写并且编译了一个新类,就会产生一个Class对象,在运行时,想生成这个类的对象时,运行这个程序的jvm会首先检查这个类的Class对象是否已经加载,如未加载,jvm就会根据类名查找 .class文件,并将其载入.而Class.forName("("sun.jdbc.odbc.JdbcOdbcDriver");")
    不仅产生Class对象,这一句并没有生成实例,如果要生成实例要用
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();虽然,newInstance的意思就是让虚拟机在加载类的同时构造一个类的对象,现在一般的驱动程序中都有静态方法在加载的时候会运行,这个静态方法会自动创建对象,不过,为了稳妥起见,建议你还是使用创建这个对象。
      

  5.   

    将这段“[Microsoft][ODBC SQL Server Driver][SQL Server]对象名 'Users' 无效。”拷到百度或google有很多解决方法 
      

  6.   

    先谢谢个位的热心回答:各位的方法我都做了,还是不行啊,报错信息还是一样的.
    我创建的数据库里面有Users这个表啊!对了,谁能再告诉我如何在  "开始"--"程序"--"microsoft SQL Server" 中打开"企业管理器"到"SQL Server 组"下,将"[lcoal](Windows NT)"改成自己的机器名啊,我单击右键,也没有更改这个选项啊,那怎么把"[lcoal](Windows NT)"改成自己的机器名啊!!!!
    愁死我了都!
      

  7.   

    你为什么不这么写呢??这么写不是很简单么? Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                Connection con = DriverManager.getConnection("jdbc:odbc:sqlserver","sa","");
                Statement st = con.createStatement();
                ResultSet rs = st.executeQuery(url);你那么写反到复杂了
    (local)就是你本机的啊。你的意思是什么啊....
      

  8.   

    谢谢大家,我的问题解决了,只要把这句rs=cs.query("select * from Users");改称rs=cs.query(" use Hospital select * from Users");程序就没有错误了,Hospital是我自己建的数据库,我把Users这个表建在Hospital这个数据库下面拉!