不用自己 create system dsn, 有什么办法吗???

解决方案 »

  1.   

    谢谢,可是我看到的用 jdbc-odbc bridge 的例子,都要 create 一个 dsn,我知道 asp 里有多种写法联上数据库,也可以不生成 dsn 指接连的,java 能做到吗??
      

  2.   

    你可以不用jbdc-odbc bridge 而直接安装某个数据库的jdbc驱动。
    你可以装个mysql数据库及其jdbc驱动mm.mysql-2.0.4-bin.jar体验一下!
      

  3.   

    /*
    * Program Database 1.1
    *@(#)DatabaseJDBC.java   2001/08/13
    */
    import java.sql.*;
    import java.util.*;
    import java.lang.*;


    public class DatabaseJDBC //implements DatabaseInf
    {

        static String url="jdbc:odbc:quote";
        static Statement stmt;
        static Connection con;
        static PreparedStatement pstmt;
        
    public  DatabaseJDBC()
    { try{
    //load the driver of the jdbc-odbc 
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

    //get a link of a datebace
    con=DriverManager.getConnection(url);

    stmt=con.createStatement();
    }catch(Exception e){
    e.printStackTrace();
        }

    }

    //public static void CreateTable(String TableName,String[] strname,String[] strtype)
    public static void CreateTable()
    {
    Statement stmt;
    Connection con;

    try{
    //creat a table in datebase
    //load the driver of the jdbc-odbc 
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

    //get a link of a datebace
    con=DriverManager.getConnection(url);

    stmt=con.createStatement();
    String strQuery="create table Chat(Sender char(10),Sendto char(10),SendMsg timestamp)";
    /*String strQuery="CREATE TABLE " + TableName + "(";
    for(int i=0;i<strname.length-1;i++)
         strQuery = strQuery + strname[i] + " " + strtype[i] + ",";
         strQuery = strQuery + strname[strname.length-1] + " " + strtype[strname.length-1] + ")";
         System.out.println(strQuery);*/
         stmt.executeUpdate(strQuery);
    System.out.println("table  created!");

           }catch(Exception e){
            System.out.println(e);
       System.out.println("The table already exists!");
    //e.printStackTrace();
        }
    }

    public static void DropTable(String TableName)
    {
    Statement stmt;
    Connection con;

    try{
    //load the driver of the jdbc-odbc 
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

    //get a link of a datebace
    con=DriverManager.getConnection(url);

    //creat a table in datebase
    stmt=con.createStatement();

    System.out.println("DROP TABLE ,if it exists.");
         String strQuery="DROP TABLE  "+ TableName ;
        
         //System.out.println(strQuery);
         stmt.executeUpdate(strQuery);
         System.out.println("DropTable ok!");
      }catch(Exception e){
       System.out.println(e);
       System.out.println("No existing table to delete");
    //e.printStackTrace();
      }

    }

    //public static void InsertTable(String TableName,String[] strname,String[] message)
    /* public static void InsertTable()
    {
    PreparedStatement pstmt;
    Statement stmt;
    Calendar rightNow = Calendar.getInstance();
                String strTime = rightNow.getTime();
    String a1="liyg";
    String a2="88";
    timestamp a3=(java.lang.String)strTime;

         Connection con;
         int d;
        
    try{
    //load the driver of the jdbc-odbc 
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

    //get a link of a datebace
    con=DriverManager.getConnection(url);


    String strQuery="insert into Chat(Sender,Sendto,SendMsg)values(?,?,?)";
    pstmt=con.prepareStatement(strQuery);
    pstmt.setString(1,a1);
    pstmt.setString(2,a2);
    pstmt.setTimestamp(3,a3);
    //insert some volues in table
    /*String strQuery="INSERT INTO " + TableName + "(";
    for(int i=0; i<strname.length-1; i++)
    strQuery = strQuery + strname[i]+",";
    strQuery = strQuery + strname[strname.length-1];
      strQuery = strQuery + ") VALUES(";
    for(int i=0; i<message.length-1; i++)
    strQuery = strQuery + "?,";
    strQuery = strQuery + "?";
    strQuery = strQuery + ")";
         System.out.println(strQuery); 
    pstmt=con.prepareStatement(strQuery);
    for(int i=0; i<message.length; i++)
    pstmt.setString(i+1,message[i]);
    System.out.println("IsertTable: end IsertTable"); */

    /* if(pstmt.executeUpdate()==1)
         System.out.println("IsertTable: IsertTable ok!");
             else
             System.out.println("IsertTable: IsertTable false!");
             con.close();   
    }catch(Exception e){
    System.out.println(e);
       System.out.println("No table to insert!");
    //e.printStackTrace();
    }
    }*/

    public static void UpdateTable(String TableName,String[] strname,String[] message1,int d,String Keywordtype, String Keywordvalue)
    {
    PreparedStatement pstmt;
    Connection con;

    try{
    //load the driver of the jdbc-odbc 
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

    //get a link of a datebace
    con=DriverManager.getConnection(url);

    String strQuery="UPDATE " + TableName+ " SET ";

    for(int i=0; i<strname.length; i++)
    if ( i!=d )
    {
    strQuery = strQuery + strname[i] + "=?,";
    }
    strQuery = strQuery.substring(0,strQuery.length()-1);
      strQuery = strQuery + " WHERE "+ strname[d] +"=?";
     
      System.out.println(strQuery);
      pstmt=con.prepareStatement(strQuery);
     
    if(Keywordtype=="String")
    pstmt.setString(strname.length,Keywordvalue);
    else if(Keywordtype=="Int")
    pstmt.setInt(strname.length,Integer.parseInt(Keywordvalue));
    for(int i=0;i<message1.length;i++)
    pstmt.setString(i+1,message1[i]);
    System.out.println("UpdateTable: end UpdateTable");
    pstmt.executeUpdate();
    System.out.println("UpdateTable: UpdateTable ok!");
             con.close(); 

    }catch(Exception e){
    System.out.println(e);
       System.out.println("No table to update!");
    //e.printStackTrace();
    }
    }

    public static String[] SelectTable(String TableName,String[] strname,String[] strtype,int p,int s, String Keywordvalue1,String Keywordvalue2)
    {
    int n=0;
    Connection con;
         PreparedStatement pstmt;
    String[] strArray={""};
    ResultSet r;
    String t="";
    String spliter = "\u0001";

    try{
    //load the driver of the jdbc-odbc 
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

    //get a link of a datebace
    con=DriverManager.getConnection(url);

    String strQuery="SELECT * from " + TableName+" WHERE (" +strname[p] + "=?" +" "+ "and" +" "+ strname[s] + "=?)";
    System.out.println(strQuery);
    pstmt=con.prepareStatement(strQuery);

    if(strtype[p]=="String")
    pstmt.setString(1,Keywordvalue1);

         else if(strtype[p]=="Int")
    pstmt.setInt(1,Integer.parseInt(Keywordvalue1));

    if(strtype[s]=="String")
    pstmt.setString(2,Keywordvalue2);

         else if(strtype[s]=="Int")
    pstmt.setInt(2,Integer.parseInt(Keywordvalue2 ));

                     r=pstmt.executeQuery(); 
                 
         while(r.next())
                     n++;
         strArray = new String[n+1];
             r=pstmt.executeQuery(); 
    strArray[0]="CHAT_TABLE";
         for(int k=1;k<n+1;k++)
          {
             r.next();
             strArray[k]="";
             for(int i=0;i<strtype.length;i++)
           { if(strtype[i]=="String")
           t=r.getString(strname[i]);
           else if(strtype[i]=="Int")
                {
                int d=r.getInt(strname[i]);
                  t = t.valueOf(d);
              }
           strArray[k]+=t+spliter;
         } 
         }
        
      }catch(Exception e){
      System.out.println(e);
       System.out.println("No table to select!");
      //e.printStackTrace();
      }
      return strArray;  

    }

    public static  String[] SelectAll(String TableName,String[] strname,String[] strtype )
    {
    int n=0;
    Connection con;
         Statement stmt;
    String[] strArray={""};
    ResultSet r;
    String t="";
    String spliter = "\u0001";

    try{
    //load the driver of the jdbc-odbc 
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

    //get a link of a datebace
    con=DriverManager.getConnection(url);

    stmt=con.createStatement();

    String strQuery="SELECT * from " + TableName;
    System.out.println(strQuery);
                        r=stmt.executeQuery(strQuery);
                
         while(r.next())
                     n++;
         strArray = new String[n];
                r=stmt.executeQuery(strQuery); 
    for(int k=0;k<n;k++)
          {
             r.next();
             strArray[k]="";
             for(int i=0;i<strtype.length;i++)
           { if(strtype[i]=="String")
           t=r.getString(strname[i]);
           else if(strtype[i]=="Int")
                {
                int d=r.getInt(strname[i]);
                  t = t.valueOf(d);
              }
           strArray[k]+=t+spliter;
         } 
         }
         System.out.println("selectall ok!");
      }catch(Exception e){
      System.out.println(e);
       System.out.println("No table to selectall!");
      //e.printStackTrace();
      }
      return strArray;  
    }

    public static void main(String[] args)
    {
    String url="jdbc:odbc:quote";
         Statement stmt;
         Connection con;
         PreparedStatement pstmt;
         String TableName="Chat";
         String Keywordtype="String";
         String Keywordvalue="a3";
         String[] strname={"Sender","Sendto","SendMsg"};
         String[] strtype={"String","Int","String"};
         String[] message={"a1","23","a3"};
         String[] message1={"a2","31"};
         String[] str;
         String keyname1="Sender",keyname2="SendMsg";
         int d=2,p=0,s=2;
         String Keywordtype1="String", Keywordtype2="String";
         String Keywordvalue1="a2", Keywordvalue2="a3";
         try{
    //load the driver of the jdbc-odbc 
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

    //get a link of a datebace
    con=DriverManager.getConnection(url);

    //creat a table in datebase
    stmt=con.createStatement();
    }catch(Exception e){
    e.printStackTrace();
        }
        //CreateTable( TableName,strname, strtype);
        CreateTable();
        //DropTable (TableName);
    //InsertTable( TableName,strname,message);
    //InsertTable();
    //InsertTable( TableName,strname,message);
    //UpdateTable( TableName, strname,message1,d,Keywordtype,Keywordvalue);
    //str=SelectTable( TableName, strname, strtype, p, s, Keywordvalue1, Keywordvalue2);
    str=SelectAll(TableName,strname,strtype );
    for(int i=0;i<str.length;i++)
    System.out.println(str[i]);
    }

    }
      

  4.   

    那里有 Access 的drive download
      

  5.   

    哪里有 Access 的jdbc drive 下
      

  6.   

    其实我的目的就是为了 java 写个 application,能访问本地的access数据库然后程序给其他不是电脑专业的人用,要他们设个dsn才能用这个软件就太麻烦了用户最好安装完了就可以使用
      

  7.   

    可以把连接字符串直接写在jdbc:odbc:后面