2014-10-08 95 views
0

在我的項目中,我使用的是System.Data.Sqlite。我想創建一個包含圖像列的表格。我設置了默認圖像(即NoImageAvailable)。但它給了我錯誤,即SQL logic error or missing database near "@img": syntax error。這是我的代碼。在Sqlite數據庫中將默認圖像設置爲列

byte[] img = null; 

     try 
     { 
      img = File.ReadAllBytes(Application.StartupPath + 
            @"\Resources\General_Images\NOPHOTO.jpg"); 
     } 
     catch { } 

     string qry = "CREATE TABLE [CLIENT_MSTR] " + 
      "([ID] INTEGER IDENTITY," + 
      "[CLIENT_ID] INTEGER PRIMARY KEY," + 
      "[ABBR] VARCHAR(3) DEFAULT '" + string.Empty + "' UNIQUE," + 
      "[PHOTO] BLOB DEFAULT @img)"; 

     SQLiteCommand cmd = new SQLiteCommand(qry, m_dbConnection); 
     cmd.Prepare(); 
     cmd.Parameters.Add("@img", DbType.Binary, img.Length); 
     cmd.Parameters["@img"].Value = img; 

     try 
     { 
      cmd.ExecuteNonQuery(); 
     } 
     catch { } 

什麼是錯?

回答

0

我懷疑你可以在DDL語句中參數化一個blob。所述docs說:

BLOB文字是包含由一個單一的「x」或「X」前面的字符十六進制數據和 字符串文字。例如:X'53514C697465'

無論你能否以這種格式包含圖像數據,我都不知道;轉換爲X'..'格式可能不是問題,但創建和輸入如此長的字符串可能會非常棘手。有控制它在理論上的option

SQLITE_OMIT_BLOB_LITERAL

When this option is defined, it is not possible 
to specify a blob in an SQL statement using the X'ABCD' syntax. 

This post也排除出去,AR至少通過參數..

如果你能得到它的工作在字面上,請張貼在這裏!