2014-02-22 86 views
-1

我正在編程創建一個.sdf文件,並且表格工作正常,但是當嘗試插入時出現錯誤, 任何人都可以請告訴我爲什麼我得到這個錯誤 解析查詢時出錯。 [令牌行號= 1,令牌行偏移= 27,令牌錯誤= INT] 這裏是我的代碼解析查詢時出錯。 [令牌行號= 1,令牌行偏移量= 27,令牌出錯= int]

private void createDbAndInsert() 
    { 
     String PersonalFolder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 

     string connStr = "Data Source = " + PersonalFolder + "\\FooDatabase.sdf; Password = SomePassword"; 

     if (!File.Exists(PersonalFolder + "\\FooDatabase.sdf")) 
     { 
      SqlCeEngine engine = new SqlCeEngine(connStr); 
      engine.CreateDatabase(); 

      SqlCeConnection conn = null; 
      try 
      { 
       conn = new SqlCeConnection(connStr); 
       conn.Open(); 

       SqlCeCommand cmd = conn.CreateCommand(); 
       cmd.CommandText = "CREATE TABLE FooTable(col1 int, col2 ntext)"; 
       cmd.ExecuteNonQuery(); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show("An error has occured.." + ex.Message); 
      } 
      finally 
      { 
       conn.Close(); 
      } 
     } 
     insertDataToTable(); 
    } 

    private void insertDataToTable() 
    { 
     String PersonalFolder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 
     string connStr = "Data Source = " + PersonalFolder + "\\FooDatabase.sdf; Password = SomePassword"; 

     SqlCeConnection con = new SqlCeConnection(@"Data Source = " + PersonalFolder + "\\FooDatabase.sdf; Password = SomePassword"); 
     con.Open(); 

     SqlCeCommand cm = new SqlCeCommand("INSERT INTO FooTable(col1 int, col2 ntext) values(@col1, @col2)", con); 
     cm.Parameters.AddWithValue("@col1", 1); 
     cm.Parameters.AddWithValue("@col2", "some text here"); 

     try 
     { 
      int affectedRows = cm.ExecuteNonQuery(); 
      if (affectedRows > 0) 
      { 
       MessageBox.Show("OK"); 

      } 
      else 
      { 
       MessageBox.Show("Not OK"); 
      } 
     } 
     catch (SqlCeException ex) 
     { 
      // do something here. 
     } 
    } 

回答

0

不要把列數據類型爲插入查詢

剛剛嘗試這個代碼,而不是您的插入查詢

SqlCeCommand cm = new SqlCeCommand("INSERT INTO FooTable(col1 , col2) values(@col1, @col2)", con); 

,你不需要這個

int affectedRows = cm.ExecuteNonQuery(); 

只寫下面這行而不是上面的行

cm.ExecuteNonQuery(); 

因爲您沒有從插入查詢中返回任何值。所以it'a可扔了轉換錯誤

陳綺貞的;)

0

問題:你同時插入項目到表中使用如下INSERT INTO聲明提供柱datatypes

      |   | 
          |   | 
          >   > 
"INSERT INTO FooTable(col1 int, col2 ntext) values(@col1, @col2)" 

解決方案:你不應該在插入項目時提供列類型

替換爲:

SqlCeCommand cm = new SqlCeCommand("INSERT INTO FooTable(col1 int, col2 ntext) values(@col1, @col2)", con); 

這一點:

SqlCeCommand cm = new SqlCeCommand("INSERT INTO FooTable(col1, col2) values(@col1, @col2)", con); 
0

要插入的數據類型also.Thats爲什麼它創造error.try此插入查詢。

SqlCeCommand cm = new SqlCeCommand("INSERT INTO FooTable(col1, col2) values(@col1, @col2)", con); 
cm.Parameters.AddWithValue("@col1", 1); 
cm.Parameters.AddWithValue("@col1", "some text here"); 
相關問題