2013-04-07 76 views
0

好的,我從昨晚和今天早上開始一直在處理這個問題。我正試圖將一些數據插入到SQL Server CE數據庫中。我在我繩索的盡頭。SQL Server CE連接字符串不允許插入數據

這裏是我想實現的代碼:

public static void InsertData(string sqlStatement) 
{ 
     try 
     { 
      //string strConn = AppDomain.CurrentDomain.GetData("DataDirectory").ToString(); 
      //string StartupPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase).Remove(0, 6); // remove file:\\ 
      //string connectionString = @"Data Source=Database1.sdf"; 
      //string connectionString = @"Data Source = |DataDirectory|\Database1.sdf"; 
      //string connectionString = @"Data Source = C:\Users\My\Documents\Visual Studio 2012\Projects\VIN_Decoder\VIN Decoder\VIN Decoder\Database1.sdf" 
      //string connectionString = string.Format("Data Source={0}; Persist Security Info=False;", Path.Combine(Application.StartupPath, "Database1.sdf")); 

      //THIS ONE ACTUALLY WORKS!!!!!!!!!!!! : 
      //string connectionString = @"Data Source = C:\Users\My\Documents\Visual Studio 2012\Projects\VIN_Decoder\VIN Decoder\VIN Decoder\Database1.sdf" 

      string connectionString = Properties.Settings.Default.Database1ConnectionString; 
      SqlCeConnection sqlceCon = new SqlCeConnection(connectionString); 
      sqlceCon.Open(); 

      SqlCeCommand sqlCeCom = new SqlCeCommand(sqlStatement, sqlceCon); 
      sqlCeCom.ExecuteNonQuery(); 
      sqlCeCom.Dispose(); 
      sqlceCon.Close(); 
     } 
     catch (Exception e) 
     { 
     } 
    } 

你可以看到所有的評論的連接字符串的,看看有什麼我都試過了。奇怪的是,我可以簡單地在另一個方法(一個SELECT語句,而不是一個INSERT INTO語句)中使用以下連接字符串從數據中獲取單個值,並且它工作正常。

string connectionString = @"Data Source = |DataDirectory|\Database1.sdf"; 

我已經直接測試的查詢和喜歡的評論說,靜態路徑做工作,讓告訴我我的查詢是好的。但是我當然需要一些相關的出版和多開發者開發。

我嘗試過的大多數連接字符串都允許try塊完成而沒有錯誤,但數據不會被插入。

有什麼建議嗎?

+0

您使用的是什麼版本的.NET? .NET 2.0? – 2013-04-07 17:31:58

+0

我正在使用4.0框架的Visual Studio 2012 ...感謝您提前提供任何幫助 – flyNflip 2013-04-07 17:33:58

+0

插入語句如下所示:'「INSERT INTO VIN_Cache VALUES('FAHP0816R1','2009','Ford','Fusion', '四門轎車','SEL','V6,3.0L','墨西哥','埃莫西約,墨西哥','FWD','雙氣囊,活動腰帶,側氣囊','轎車'​​,'中型汽車','汽油','203HP')「' – flyNflip 2013-04-07 17:37:13

回答

0

在發佈這個問題之前,我搜尋了我的心,但西蒙是正確的關於相似性。不過,我們在這裏會有更好的答案。科拉克是正確的。我將屬性設置爲不復制,刪除bin \ debug文件夾中的副本,並且應用程序無法在調試模式下運行,因爲即使路徑都指向其他文件位置,它也找不到數據庫。應用程序正在尋找bin \ debug中的副本。最終,它一直在努力。我建議有人連接bin \ debug中的副本,以便他們可以在服務器瀏覽器中測試值。感謝您的幫助Corak和其他人。

0
/*If your solution is web application, make sure Database1.sdf location path is under the 
    * App_Data folder 
    * Web.Config <add name="LocalDB" connectionString="Data Source=|DataDirectory|\Database1.sdf"/> 
    */ 
    protected string ConnString 
    { 
     get 
     { 
      return ConfigurationManager.ConnectionStrings["LocalDB"].ToString(); 
     } 
    } 

    /* 
    * or you can use try absolute path as connectionstring 
    * modify your directory path as PhysicalApplicationPath result 
    */ 
    public string BaseDirConnString 
    { 
     get 
     { 
      if ((HttpContext.Current == null) || (HttpContext.Current.Request == null)) 
      { 
       throw new ApplicationException("..."); 
      } 

      return @"Data Source=" + HttpContext.Current.Request.PhysicalApplicationPath + "VIN Decoder\\Database1.sdf"; 
     } 
    } 

    protected SqlCeConnection SqlCeConnection 
    { 
     get 
     { 
      var connection = new SqlCeConnection(BaseDirConnString); 
      connection.Open(); 
      return connection; 
     } 
    }