一、修改表名稱、增加欄位、查詢表結構、修改表結構欄位類型 1 1.修改表名稱 2 3 ALTER TABLE 舊表名 RENAME TO 新表名 4 5 eg: ALTER TABLE or_sql_table RENAME TO new_table; 6 7 8 9 2.添加欄位 10 11 AL ...
一、修改表名稱、增加欄位、查詢表結構、修改表結構欄位類型
1 1.修改表名稱 2 3 ALTER TABLE 舊表名 RENAME TO 新表名 4 5 eg: ALTER TABLE or_sql_table RENAME TO new_table; 6 7 8 9 2.添加欄位 10 11 ALTER TABLE 表名 ADD COLUMN 列名 數據類型 12 13 eg: ALTER TABLE new_table ADD COLUMN sex Text; 14 15 16 17 3.查詢表結構 18 19 PRAGMA TABLE_INFO (表名) 20 21 eg: PRAGMA TABLE_INFO (new_table); 22 23 24 25 4.修改表結構欄位類型 26 27 SQLite 僅僅支持 ALTER TABLE 語句的一部分功能,我們可以用 ALTER TABLE 語句來更改一個表的名字,也可向表中增加一個欄位(列),但是我們不能刪除一個已經存在的欄位,或者更改一個已經存在的欄位的名稱、數據類型、限定符等等。 28 29 而修改一列無法像其他資料庫那樣直接以“ALTER TABLE 表名 ADD COLUMN 列名 數據類型”的方式來完成,所以要換種思路,具體步驟看下麵: 30 31 --1.將表名改為臨時表 32 33 ALTER TABLE "Student" RENAME TO "_Student_old_20140409"; 34 35 2 36 --2.創建新表 37 38 CREATE TABLE "Student" ("Id" INTEGER PRIMARY KEY AUTOINCREMENT, "Name" Text); 39 40 3 41 --3.導入數據 42 43 INSERT INTO "Student" ("Id", "Name") SELECT "Id", "Title" FROM "_Student_old_20140409"; 44 45 4 46 --4.更新sqlite_sequence 47 48 UPDATE "sqlite_sequence" SET seq = 3 WHERE name = 'Student'; 49 50 由於在Sqlite中使用自增長欄位,引擎會自動產生一個sqlite_sequence表,用於記錄每個表的自增長欄位的已使用的最大值,所以要一起更新下。如果有沒有設置自增長,則跳過此步驟。 51 52 5 53 --5.刪除臨時表(可選) 54 55 DROP TABLE _Student_old_20140409;修改表
參考:https://blog.csdn.net/zp1307700/article/details/52848410
二、解決EF6中表名變成複數的情況
在用EF6 時,在進行數據調用的時候,總提示數據表名對象錯誤。。
sql logic error no such table: locareas 實際 表名為locarea
解決此問題需要在繼承DbContext的實體類中
加入:
using System; using System.ComponentModel.DataAnnotations; using System.Data.Entity; using System.Data.Entity.ModelConfiguration.Conventions;
和重寫方法
protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); }
參考:https://www.cnblogs.com/blackice/p/3667426.html
三、“該字元串未被識別為有效的DateTime”
異常詳細信息: System.FormatException: 該字元串未被識別為有效的 DateTime。
解決方案:
1 在日期保存到Sqlite資料庫時轉換一個類型,比如:string _now = System.DateTime.Now.ToString("s"); 2 3 也就是說在.ToString()方法中加一個s,即可解決日期讀取錯誤的問題。 4 5 簡單代碼示例: 6 7 string _indate = Request["indate"]; //輸入的日期如:2009-2-21 8 DateTime _inTime = Convert.ToDateTime(_indate); 9 10 //如下是保存數據SQL語句 11 12 insert into 表(indate) values(‘“ + _inTime.ToString("s") + "'); //這裡轉換 13 14 15 16 因為iso 8601的描述:(http://msdn.microsoft.com/zh-cn/library/ms187819.aspx) 17 18 給出了字元串示例: 19 * 2004-05-23 14:25:10 20 * 2004-05-23 14:25:10.487 21 22 所以Sqlite保存的日期要轉為iso 8601標準字元串格式 23 24 使用 日期.ToString("s");這種方法轉換成 iso 8601標準字元串格式了。View Code
參考:https://www.cnblogs.com/huxiaolin/p/4148692.html
四、配置app.config
安裝後,在app.config中缺少一句provider,添加上。
<providers> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> <provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" /> <!-- 1. Solves SQLite error of "Unable to find the requested .Net Framework Data Provider."--> <provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" /> </providers>
參考:https://www.cnblogs.com/wolf-sun/p/6957702.html
五、bool類型
bool類型存儲時只能存儲0,1,null