2009-06-28 18 views
5

पैरामीटर का उपयोग करते समय मुझे SQLite (0.4.8) में मिलान करने के लिए गइड्स प्राप्त करने में समस्याएं आ रही हैं, जब मैं userGuid = 'guid here' जैसे कुछ का उपयोग करता हूं, लेकिन userGuid = @GuidHere ऐसा नहीं करता है। क्या किसी के भी पास कोई सुझाव है?गुड्स के साथ SQLite पैरामीटर समस्या

बनाएँ:

CREATE TABLE Users 
(
    UserGuid TEXT PRIMARY KEY NOT NULL, 
    FirstName TEXT, 
    LastName TEXT 
) 

नमूना डेटा:

INSERT INTO Users (UserGuid, FirstName, LastName) 
VALUES ('e7bf9773-8231-44af-8d53-e624f0433943', 'Bobby', 'Bobston') 

हटाएं वक्तव्य (कार्य):

DELETE FROM Users WHERE UserGuid = 'e7bf9773-8231-44af-8d53-e624f0433943' 

हटाएं वक्तव्य (काम नहीं कर रहा):

DELETE FROM Users WHERE UserGuid = @UserGuid 
,210

यहाँ एक सी # मेरी समस्या दिखा कार्यक्रम है:

using System; 
using System.Data.SQLite; 

namespace SQLite_Sample_App 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Do(); 
      Console.Read(); 
     } 

     static void Do() 
     { 
      using(SQLiteConnection MyConnection = new SQLiteConnection("Data  Source=:memory:;Version=3;New=True")) 
      { 
       MyConnection.Open(); 
       SQLiteCommand MyCommand = MyConnection.CreateCommand(); 
       MyCommand.CommandText = @" 
        CREATE TABLE Users 
        (
         UserGuid TEXT PRIMARY KEY NOT NULL, 
         FirstName TEXT, 
         LastName TEXT 
        ); 

        INSERT INTO Users (UserGuid, FirstName, LastName) 
        VALUES ('e7bf9773-8231-44af-8d53-e624f0433943', 'Bobby', 'Bobston'); 
        "; 
       MyCommand.ExecuteNonQuery(); 

       MyCommand.CommandText = "SELECT Count(*) FROM Users WHERE UserGuid = 'e7bf9773-8231-44af-8d53-e624f0433943'"; 
       Console.WriteLine("Method One: {0}", MyCommand.ExecuteScalar()); 

       MyCommand.Parameters.AddWithValue("@UserGuid", new Guid("e7bf9773-8231-44af-8d53-e624f0433943")); 
       MyCommand.CommandText = "SELECT Count(*) FROM Users WHERE UserGuid = @UserGuid"; 
       Console.WriteLine("Method Two: {0}", MyCommand.ExecuteScalar());      
      } 
     } 
    } 
} 

संपादित करें:

खैर ऐसा लगता है कि AddParamWithValue एक Guid के 16byte प्रतिनिधि से अनुवादित करता है मुझे लगता है कि मैं वास्तव में सभी guids अनुवाद करने के लिए क्या है पहले तारों के लिए ... थोड़े परेशान।

उत्तर

6

GUID ऑब्जेक्ट की बजाय GUID की स्ट्रिंग को अपने AddWithValue कॉल पर बसने का प्रयास करें।

तो बजाय

MyCommand.Parameters.AddWithValue(
    "@UserGuid", new Guid("e7bf9773-8231-44af-8d53-e624f0433943")); 

यह करें:

MyCommand.Parameters.AddWithValue(
    "@UserGuid", "e7bf9773-8231-44af-8d53-e624f0433943"); 
संबंधित मुद्दे