package com.jdbc.connection;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.util.Scanner;public class UserLonginClass
{
static Connection  con = null;
static Statement stm = null;
static String userName = "sa";
static String  userpassWord = "java";
public static void Connection()
{

String URL = "jdbc:sqlserver://localhost:1433;DatabaseName=haifei";
try
 {
 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
 con = DriverManager.getConnection(URL,userName,userpassWord);


    stm = con.createStatement();

    String s  = "create table userLoginName3(iname varchar(20),iPassword varchar(20))";

stm.execute(s);

if(true)
{
System.out.print("create sucess---!!");
}
else
{
System.out.print("not create sucess---!!");
}

}
catch(Exception e1)
{
e1.printStackTrace();
}


}

public static void Loigin()
{
String userName = null;
String userPassword = null;
System.out.println("please you Login.....");
System.out.println("plese enter userName");
Scanner scan = new Scanner(System.in);
scan.next();

System.out.println("plese enter userPassword");
Scanner scan1 = new Scanner(System.in);
scan1.next();

try
{
String str  = "insert into userLoginName3 values(userName,userPassWord)";
stm.execute(str);
}
catch(Exception e)
{
e.printStackTrace();
}

}

public static void main(String args[])
{
UserLonginClass. Connection();
UserLonginClass.Loigin();
}
}
这个程序我是想 通过while循环不断从键盘输入用户名和密码存到数据库了输入一个用户名和密码
就提示 存储成功
然后继续输入
直到输入'quit '
退出程序请教高手应该怎么改

解决方案 »

  1.   

    我写一个事例, 你再推敲一下, 应该能自己解决这个问题public class linkDB
    {
         private Statement stmt = null;
         public linkDB() {
               try {
                   Class.forname("..................");
                   stmt = DriverManager.getConnection(".......").createStatement();
               } catch (Exception ex) {
                    ex.printStackTrace();
               }
         }     public int execUpdate(String sql) {
              try {
                   return stmt.executeUpdate(sql);
              } catch (Exception ex) {
                   ex.printStackTrace();
                   return 0;
              }
         }
    }public class UserLonginClass
    {
         
         public static void main(String args[]) throws Exception{
                linkDB db = new linkDB();
                Scanner sc = new Scanner(System.in);
                while (true){
                     System.out.println("plese enter userName");
                     String userName = sc.next();
                     if(userName.equals("quit")
                          return;
                     System.out.println("plese enter userPassword");
                     String password = sc.next();
                     if(password.equals("quit")
                          return;
                     db.execUpdate("insert tableName(colName, colName) values ('" + userName + "','" + password);
                } 
                System.out.println("exit .... ");
         }
    }你的问题应该是实现登录的功能吧 。。 只要再写个 public ResultSet execQurey(String sql) throws Exception{
        return stmt.executeQurey(sql);
    }然后在main方法里面获得登录的帐号和密码的结果集 ResultSet 
    String userName = ResultSet.getString("userName");
    String password = ResultSet.getString("password");if(userName.equals(auserName) && password.equals(apassword))
    这样满意吗? : >
      

  2.   

    package com.jdbc.connection;import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import java.util.Scanner;public class UserLonginClass
    {
    static Connection  con = null;
    static Statement stm = null;
    static String userName = "sa";
    static String  userpassWord = "java";


    public static void Connection()
    {

    String URL = "jdbc:sqlserver://localhost:1433;DatabaseName=haifei";
    try
     {
     Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
     con = DriverManager.getConnection(URL,userName,userpassWord);
     }
    catch(Exception e1)
    {
    e1.printStackTrace();
    }


    }

    public static  int execteUpdate(String sql)
    {
    try
    {
    return stm.executeUpdate(sql);
    }
    catch(Exception e)
    {
    e.printStackTrace();
    return 0;
    }

    }


    public static void Loigin()
    {
    String Name = null;
    String Password = null;

    Scanner scan = new Scanner(System.in);

    while(true)
    {
    System.out.println("plese enter userName");
    Name = scan.next();
    if (Name.equals("quit"))
    {
    return;
    }

    System.out.println("plese enter userPassword");
    Password = scan.next();

    if(Password.equals("quit"))
    {
    return;
    }

    UserLonginClass.execteUpdate("insert into [haifei].[dbo].[userLoginName3] values (Name,Password)");
    }
    }

    public static void statement()throws Exception
    {
    String st = "select * from [haifei].[dbo].[userLoginName3]";
    ResultSet s = stm.executeQuery(st);
    while (s.next())
    {
    String name = s.getString("iname");
    String password = s.getString("iPassword");

    System.out.print(name + "  " + password);

    }
    System.out.println();

    }



    public static void main(String args[])throws Exception
    {
    UserLonginClass. Connection();
    UserLonginClass.Loigin();
    UserLonginClass.statement();
    }
    }
    这个程序我运行了一下出现异常java.lang.NullPointerException
    at com.jdbc.connection.UserLonginClass.execteUpdate(UserLonginClass.java:38)
    at com.jdbc.connection.UserLonginClass.Loigin(UserLonginClass.java:73)
    at com.jdbc.connection.UserLonginClass.main(UserLonginClass.java:98)请教高手是什么回事
      

  3.   

    是空指针, 引用了没有实例化的  null 对象   改正方法如下
    public static void Connection()
    {String URL = "jdbc:sqlserver://localhost:1433;DatabaseName=haifei";
    try
     {
     Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
     con = DriverManager.getConnection(URL,userName,userpassWord);/*  改正的地方, 要实例化对象Statement  */
     stmt = con.createStatement(); }
    catch(Exception e1)
    {
    e1.printStackTrace();
    }