2013-04-07 77 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; 
     } 
    }