无法从android

时间:2017-03-10 08:20:06

标签: android sql-server

这是我的Connection Class的代码,但是连接没有建立。每当我打印con我得到null,谁能告诉我哪里出错了?我在app的lib文件夹中包含了jtds-1.3.1.jar。我无法理解我哪里出错了

package com.jazzitup.music;



import android.annotation.SuppressLint;
import android.os.StrictMode;
import android.util.Log;

import java.sql.*;
import net.sourceforge.jtds.jdbc.*;
public class   ConnectionClass {

    @SuppressLint("NewApi")
    public static Connection CONN() {
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
                .permitAll().build();
        StrictMode.setThreadPolicy(policy);
        Connection conn = null;
        String ConnURL = null;
        try {

            //Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            Class.forName("net.sourceforge.jtds.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:sqlserver://jazzitup.database.windows.net:1433;database=jazzitup.db;user=xxxxxxxx;password=xxxxxx;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;");
            System.out.println("CON:"+conn);
        } catch (SQLException se) {
            Log.e("ERRO", se.getMessage());
        } catch (ClassNotFoundException e) {
            Log.e("ERRO", e.getMessage());
        } catch (Exception e) {
            Log.e("ERRO", e.getMessage());
        }
        return conn;
    }
}

2 个答案:

答案 0 :(得分:0)

使用Web服务从设备访问数据库而不使用直接连接是优选的(或者我必须认为)。并非每个java的lib都适用于andoid。

答案 1 :(得分:0)

1.首先,让课程为extend SQLiteOpenHelper

2.创建该类的承包商并实施所需的所有功能。

  1. 关于方法
  2.   

    的onCreate((SQLiteDatabasedb)

    只需创建名为查询的字符串
    并创建你想要的表,并execSql它,例如:

    String query="create table if not exists table(text text,name text2,_id text)";
    db.execSQL(query);
    

    然后在sql lite中创建新行:

     public void add_new_row(String text,String text2,String _id){
    try{
    ContentValues cn=new ContentValues(); 
    cn.put("text",per_name); 
    cn.put("text2",per_age);      
    cn.put("_id",per_age);      
    
    SQLiteDatabase db;     
    db=getWritableDatabase();   
    db.insert("table",null,cn);}
    catch(Exception e){
    Log.i("AddSql_lite","Print :"+e.to );
    
    }
    

    对于来自sqllite的读取行,您只需使用:

      

    public String getRow_by_id(String _id){           string text =“”;           尝试{               分贝= getWritableDatabase();                       query =“select * from table where _id ='”+ _id +“'”;

            Cursor cr=db.rawQuery(query, null);
            if(cr.moveToFirst()){
                do{
                    text = cr.getString(0);
                    String text2 = cr.getString(1);
                    String _id = cr.getString(2);
                }while(cr.moveToNext());
            }
    
        }catch(Exception e){
        }
    
        return text;
    }
    

    并且一个接一个地读取表格中的所有行:

      

    public int get_all_Rows(){           string int counter = 0;           尝试{               分贝= getWritableDatabase();                       query =“select * from table”;

            Cursor cr=db.rawQuery(query, null);
            if(cr.moveToFirst()){
                do{
                    text = cr.getString(0);
                    String text2 = cr.getString(1);
                    String _id = cr.getString(2);
                    counter++;
                }while(cr.moveToNext());
            }
    
        }catch(Exception e){
        }
    
        return counter;
    }
    

    希望它能帮助您了解Sqllite如何工作以及如何正确构建它:)

    为了让它运行如此:

      

    SQLiteDataBase Sqllite_ref = new SQLiteDataBase(context,“VerName”,   null,1);

         

    Sqllite_ref.add_new_row( “嘿”, “hey4”, “1”);   Sqllite_ref.add_new_row( “HEY2”, “hey5”, “2”);   Sqllite_ref.add_new_row( “hey3”, “hey6”, “3”);

         

    Sqllite_ref.getRow_by_id( “2”);>>>将返回“hey2”   Sqllite_ref.get_all_Rows()>>>将返回3 [您拥有的物品数量   在sqllite]