मैं एक डेटाबेस Android पर मोनो का उपयोग कर लागू करने के लिए SQLite शुद्ध (https://github.com/praeclarum/sqlite-net) का उपयोग कर रहा हूँ और का उपयोग करने में SQLite शुद्ध सी # व्यापक क्वेरी बनाना निम्नलिखित है:SQLiteAsyncConnection
public class DatabaseTestASync
{
private SQLiteAsyncConnection m_db;
public delegate void StocksFound(List<Stock> list);
public event StocksFound StocksFoundListener;
// Uninteresting parts remove, e.g. constructor
public void AddStock(Stock stock)
{
m_db.InsertAsync(stock).ContinueWith(t => { Debug.WriteLine(stock.Symbol + " added"); });
}
public void GetAllStocks()
{
AsyncTableQuery<Stock> query = m_db.Table<Stock>().Where(stock => true);
query.ToListAsync().ContinueWith(QueryReturns);
}
private void QueryReturns(Task<List<Stock>> t)
{
if (StocksFoundListener != null)
StocksFoundListener(t.Result);
}
यह देने के लिए बहुत अच्छा है मुझे एक स्टॉक की सूची, लेकिन मुझे मेरी परियोजना में तालिकाओं का संग्रह होने की परिकल्पना है और प्रत्येक तालिका के लिए एक अलग एडएक्स, गेटएलेक्स, क्वेरीरीटर्न्स (एक्स) आदि बनाना नहीं चाहते हैं। मैं इन डेटाबेस कार्यों करने का एक सामान्य तरीके के बाद कर रहा हूँ और निम्नलिखित की कोशिश की: 'टी' के क्रम में एक सार्वजनिक parameterless निर्माता के साथ एक गैर सार प्रकार होना चाहिए:
public class DBQuery<T>
{
private SQLiteAsyncConnection m_db;
public delegate void OnRecordsFound(List<T> list);
public event OnRecordsFound RecordsFoundListener;
public DBQuery (SQLiteAsyncConnection db)
{
m_db = db;
}
public void GetAllRecords()
{
AsyncTableQuery<T> query = m_db.Table<T>().Where(r => true); // COMPILE ERROR HERE
query.ToListAsync().ContinueWith(QueryReturns);
}
private void QueryReturns(Task<List<T>> t)
{
if (RecordsFoundListener != null)
RecordsFoundListener(t.Result);
}
}
हालांकि, यह कह संकलन नहीं है जेनेरिक प्रकार या विधि 'DatabaseUtility.AsyncTableQuery' में पैरामीटर 'टी' के रूप में इसका उपयोग करने के लिए।
इस बारे में कोई भी विचार है कि मैं इस तरह के सामान्य डेटाबेस पहुंच कैसे प्राप्त कर सकता हूं?
शानदार, पूरी तरह से काम करता है। धन्यवाद। –