2013-07-19 123 views
1

我對C#很新,我想創建一個sqlite數據庫連接類。我通過點擊我的項目名稱>添加>類創建了一個新的類文件。我在這個文件中有以下代碼。C#中的sqlite數據庫連接類

問題是我得到的錯誤在每行之後SQLiteDataReader

  1. 如果我將鼠標懸停在sqlite_conn然後它說「......是一個領域,但使用像一個類型」
  2. 如果我將鼠標懸停在SQLiteConnection那麼說......方法必須返回類型
  3. 如果我將鼠標懸停在("Data Source=database.db;Version=3;New=True;Compress=True;")然後它說類型預期

`

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using Finisar.SQLite; 

namespace learningCsharp 
{ 
class database 
{ 
    // We use these three SQLite objects: 
    SQLiteConnection sqlite_conn; 
    SQLiteCommand sqlite_cmd; 
    SQLiteDataReader sqlite_datareader; 

    // Getting error in every lines after this 

    // create a new database connection: 
    sqlite_conn = new SQLiteConnection("Data Source=database.db;Version=3;New=True;Compress=True;"); 

    //open the connection: 
    sqlite_conn.Open(); 

    // create a new SQL command: 
    sqlite_cmd = sqlite_conn.CreateCommand(); 

} 
} 

你能幫我解決這個問題,並創建一個工作的SQLite數據庫連接類嗎?

+0

您是否嘗試清潔並徹底重建解決方案? –

+0

http://stackoverflow.com/questions/26020/what-is-the-best-way-to-connect-and-use-a-sqlite-database-from-c-sharp可能會幫助您 –

回答

1

您需要將錯誤行放在類構造函數或方法中。

public class database 
{ 
    // We use these three SQLite objects: 
    public SQLiteConnection sqlite_conn; 
    public SQLiteCommand sqlite_cmd; 
    public SQLiteDataReader sqlite_datareader; 

    public database() 
    { 
     sqlite_conn = new SQLiteConnection("Data Source=database.db;Version=3;New=True;Compress=True;"); 
     sqlite_conn.Open(); 
     sqlite_cmd = sqlite_conn.CreateCommand(); 
    } 

} 
+0

感謝您的回覆,我已經設法擺脫錯誤使用您的解決方案,但是當我使用類像這樣'Database db = new Database();''db.CommandText =「INSERT INTO test(id,text)VALUES(1 ,'測試文本1');「;它給我一個錯誤強調'CommandText'。你能告訴我爲什麼會這樣嗎? –

+0

你的數據庫類中沒有'CommandText',你有'sqlite_cmd'。調用它像'db.sqlite_cmd.CommandText =「INSERT INTO測試(ID,文本)VALUES(1,'測試文本1')」;' – Damith

+0

我剛剛嘗試過'db.sqlite_cmd.CommandText',但這次它給我錯誤強調'sqlite_cmd'。謝謝 –

0

您不能在不同的行中初始化字段(方法之外)。類改成這樣:

namespace learningCsharp 
{ 
    class Database 
    { 
     // We use these three SQLite objects: 
     SQLiteConnection sqlite_conn; 
     SQLiteCommand sqlite_cmd; 
     SQLiteDataReader sqlite_datareader; 

     //constructor called when initializing new instance 
     public Database() 
     { 
      sqlite_conn = new SQLiteConnection("Data Source=database.db;Version=3;New=True;Compress=True;"); 
      sqlite_conn.Open(); 
      sqlite_cmd = sqlite_conn.CreateCommand(); 
     } 
    } 
} 
0

你從來沒有創建方法或構造函數。

class database 
{ 
    // Here you define properties: OK 
    SQLiteConnection sqlite_conn; 
    SQLiteCommand sqlite_cmd; 
    SQLiteDataReader sqlite_datareader; 


    // Then, you do stuff to them: NOT OK 
    sqlite_conn = new SQLiteConnection("Data Source=database.db;Version=3;New=True;Compress=True;"); 

    //open the connection: 
    sqlite_conn.Open(); 

    // create a new SQL command: 
    sqlite_cmd = sqlite_conn.CreateCommand(); 

} 
} 

您可以修復它,把你的 「做-東西」 代碼的方法:

class database 
{ 
    // Here you define properties: OK 
    SQLiteConnection sqlite_conn; 
    SQLiteCommand sqlite_cmd; 
    SQLiteDataReader sqlite_datareader; 

    void public DoStuff() { 
     // Then, you do stuff to them: NOT OK 
     sqlite_conn = new SQLiteConnection("Data Source=database.db;Version=3;New=True;Compress=True;"); 

     //open the connection: 
     sqlite_conn.Open(); 

     // create a new SQL command: 
     sqlite_cmd = sqlite_conn.CreateCommand(); 

    } 
    } 
} 

然後,您可以實例化和運行這樣的:

database db = new database(); 
db.DoStuff(); 

這是所有基本的C#,OO編程。我強烈建議你在進入SQLite數據庫編程之前先學習C#。

+0

是的,你說得對,我應該首先學習C#的基礎知識。否則我將無法找出錯誤的原因 –