Ошибка связи между классом SQLite и классом SQL Server в Android JavaAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка связи между классом SQLite и классом SQL Server в Android Java

Сообщение Anonymous »

Мне удалось создать локальную базу данных SQLite для вставки данных, их чтения и обновления. Проблема в классе, где я провожу тест связи с SQL Server, там я не могу извлечь данные из sql lite, в которых хранятся данные связи (если я помещу их напрямую, у меня не возникнет проблем)
Ниже ошибка:
java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.File android.content.Context.getDatabasePath(java.lang.String)' on a null object reference
2024-12-05 21:36:00.969 13284-13337 System.err com.example.midasitemcatalog W at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:352)
2024-12-05 21:36:00.969 13284-13337 System.err com.example.midasitemcatalog W at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:322)
2024-12-05 21:36:00.969 13284-13337 System.err com.example.midasitemcatalog W at Queries.SQLite.readConnetion(SQLite.java:67)
2024-12-05 21:36:00.969 13284-13337 System.err com.example.midasitemcatalog W at MidasConnetion.MSSQLConnection.connectionclass(MSSQLConnection.java:28)
2024-12-05 21:36:00.970 13284-13337 System.err com.example.midasitemcatalog W at Queries.SQLQueries.getItemsFragments(SQLQueries.java:287)
2024-12-05 21:36:00.970 13284-13337 System.err com.example.midasitemcatalog W at fragments.ItemListFragment$RetrieveDataAsyncTask.doInBackground(ItemListFragment.java:353)
2024-12-05 21:36:00.970 13284-13337 System.err com.example.midasitemcatalog W at fragments.ItemListFragment$RetrieveDataAsyncTask.doInBackground(ItemListFragment.java:326)
2024-12-05 21:36:00.970 13284-13337 System.err com.example.midasitemcatalog W at android.os.AsyncTask$2.call(AsyncTask.java:333)
2024-12-05 21:36:00.970 13284-13337 System.err com.example.midasitemcatalog W at java.util.concurrent.FutureTask.run(FutureTask.java:266)
2024-12-05 21:36:00.971 13284-13337 System.err com.example.midasitemcatalog W at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
2024-12-05 21:36:00.971 13284-13337 System.err com.example.midasitemcatalog W at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
2024-12-05 21:36:00.971 13284-13337 System.err com.example.midasitemcatalog W at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
2024-12-05 21:36:00.971 13284-13337 System.err com.example.midasitemcatalog W at java.lang.Thread.run(Thread.java:764)

Сначала мой урок по sqlite
package Queries;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import java.util.ArrayList;

public class SQLite extends SQLiteOpenHelper {

private static final String DATABASE_NAME = "midasandroid.db";
private static final int DB_Version = 1;
private static final String local_Data = "Configure";
private static final String id = "id";
private static final String dbDomainName = "dbDomainName";
private static final String dbname = "dbname";
private static final String dbPort = "dbPort";
private static final String dbUser = "dbUser";
private static final String dbPassword = "dbPassword";
private static final String currentMetPrice = "currentMetPrice";
private static final String apikey = "apikey";
private Context context;

public SQLite(Context context) {
super(context, DATABASE_NAME, null, DB_Version);
}

@Override
public void onCreate(SQLiteDatabase db) {
String sql = "CREATE TABLE " + local_Data + "("
+ id + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ dbDomainName + " TEXT,"
+ dbPort + " TEXT,"
+ dbname + " TEXT,"
+ dbUser + " TEXT,"
+ dbPassword + " TEXT,"
+ apikey + " TEXT,"
+ currentMetPrice + " REAL)";
db.execSQL(sql);

}

public void addValuesCon(String dbDomainName, String dbname, String dbPort, String dbUser, String dbPassword) {
SQLiteDatabase db = this.getWritableDatabase();

ContentValues values = new ContentValues();
values.put(this.id, 1);
values.put(this.dbDomainName, dbDomainName);
values.put(this.dbPort, dbPort);
values.put(this.dbname, dbname);
values.put(this.dbUser, dbUser);
values.put(this.dbPassword, dbPassword);
values.put(this.apikey, "");
values.put(this.currentMetPrice, 0);
db.insert(local_Data, null, values);
db.close();

}

public ArrayList readConnetion() {
ArrayList localData = new ArrayList();
SQLiteDatabase db = getReadableDatabase();
Cursor cursor = db.rawQuery("SELECT * FROM " + local_Data, null);
if (cursor.moveToFirst()) {
do {
localData.add(new LocalData(cursor.getString(0),
cursor.getString(1),
cursor.getString(2),
cursor.getString(3),
cursor.getString(4),
cursor.getString(5),
cursor.getString(6),
cursor.getFloat(7)));
} while (cursor.moveToNext());
}
cursor.close();
return localData;
}

public ArrayList readMetPrice() {
ArrayList localData = new ArrayList();
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery("SELECT * FROM " + local_Data, null);
if (cursor!=null) {
while (cursor.moveToNext()) {
localData.add(new LocalData(cursor.getString(1),
cursor.getString(2),
cursor.getString(3),
cursor.getString(4),
cursor.getString(5),
cursor.getString(6),
cursor.getString(7),
cursor.getFloat(8)));
}
}
cursor.close();
return localData;
}

public void updateDataConnection(int id, String dbDomainName, String dbname, String dbPort, String dbUser, String dbPassword){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();

values.put(this.dbDomainName, dbDomainName);
values.put(this.dbname, dbname);
values.put(this.dbPort, dbPort);
values.put(this.dbUser, dbUser);
values.put(this.dbPassword, dbPassword);

db.update(local_Data, values, "id = ?", new String[]{String.valueOf(id)});
db.close();
}

public void updateDataMetPrice(int id,String apikey, float currentMetPrice){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();

values.put(this.apikey, apikey);
values.put(this.currentMetPrice, currentMetPrice);

db.update(local_Data, values, "id = ?", new String[]{String.valueOf(id)});
db.close();
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

db.execSQL("DROP TABLE IF EXISTS " + local_Data);
onCreate(db);
}
}


Мое подключение к SQL Server
package MidasConnetion;

import android.content.Context;
import android.os.StrictMode;
import android.util.Log;

import java.sql.Connection;
import java.sql.DriverManager;
import java.util.ArrayList;

import Queries.LocalData;
import Queries.SQLite;
import Queries.SQLtoSQLite;

public class MSSQLConnection {
private Context context;
public MSSQLConnection(Context context){
this.context = context;
}

public Connection connectionclass() {

Connection connection = null;
SQLite sqLite = new SQLite(context);
ArrayList localData1 = sqLite.readConnetion();
if (!localData1.isEmpty()){
LocalData localData = localData1.get(0);
String classDriver="net.sourceforge.jtds.jdbc.Driver";
String serverID="jdbc:jtds:sqlserver://"+localData.getDbDomainName()+":"+localData.getDbPort()+"/"+localData.getDbname();
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
try {
Class.forName(classDriver);
DriverManager.getLoginTimeout();
connection = DriverManager.getConnection(serverID, localData.getDbUser(), localData.getDbPassword());
} catch (ClassNotFoundException e) {
Log.d("Connected ", "Connected "+ e.getMessage());
}
catch (Exception e) {
Log.d("Error ","Error "+ e.getMessage());
}
}
return connection;

}

}


и класс запроса

public class SQLQueries {
private static Context context;
private static MSSQLConnection connectionSQL;

public SQLQueries(Context context){
this.context = context;
connectionSQL = new MSSQLConnection(context);
}

public static ArrayList getItemsFragments(String searchText ){

Connection connect;
int i=0;
String query = context.getResources().getString(R.string.fragment_select_items) + searchText;
Log.d("Items query",query);

ArrayList fetchItems= new ArrayList();

try {
Connection connec = connectionSQL.connectionclass();
if (connec != null) {
Statement st = connec.createStatement();
ResultSet rs = st.executeQuery(query);
while (rs.next()) {
i++;
Integer barcode = rs.getInt(1);
String itmSupCode = rs.getString(2);
String itmSection = rs. getString(3);
String itmType = rs.getString(4);
String ItmStonesName = rs.getString(5);
String alloycode = rs.getString(6);
Float ItmLPrice = rs.getFloat(7);
byte[] photo = rs.getBytes(8);
fetchItems.add(new ItemList(i,barcode,itmSupCode,itmSection,itmType,ItmStonesName,alloycode,ItmLPrice,photo));
}
rs.close();
st.close();
connec.close();
}
}
catch (Exception e) {
e.printStackTrace();
}
return fetchItems;
}

}


Подробнее здесь: https://stackoverflow.com/questions/792 ... droid-java
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»