SqLite踩的坑

来源:https://www.cnblogs.com/1008yun/archive/2019/06/18/SqLite1.html
-Advertisement-
Play Games

一、修改表名稱、增加欄位、查詢表結構、修改表結構欄位類型 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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言:為了節約時間,先只粘貼關鍵代碼: 1-添加section標簽,name為自定義標簽名稱,type為:命名空間+類型,程式集名稱 2-自定義標簽數據: watchModel為自定義標簽(ConfigurationSection),watchItems為自定義標簽的數據集(Configuratio ...
  • 一、創建項目 新建api項目: 建好之後,一個預設的控制器已經有了: 運行就可以直接訪問get介面獲取數據: 二、跨平臺部署 部署方面,微軟已經完善的很好了,基本上算是傻瓜式操作。項目右鍵選擇發佈: 部署模式可以採用框架依賴,或獨立,選擇框架依賴,則需要在目標平臺安裝netcore運行時後才能運行n ...
  • LnskyDB " " " " LnskyDB是基於Dapper的Lambda擴展,支持按時間分庫分表,也可以自定義分庫分表方法.而且可以T4生成實體類免去手寫實體類的煩惱. 文檔地址: https://liningit.github.io/LnskyDB/ 開源地址: https://github ...
  • (迄今為止網上那些說的用Encoding.Default解決中文文件名亂碼的都不能真正解決問題!) 1、在程式開始處 Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); 2、設置編碼為GBK ...
  • 測試代碼: 不忘初心,方得始終;初心易得,始終難守。 ...
  • asp.net core系統自帶的異常頁面色彩給人感覺模糊、朦朧,暈眩! 原版: 美化版 實現思路:(在系統自帶異常中間件“DeveloperExceptionPageMiddleware”執行後,調用自定義的異常中間件“DeveloperExceptionPrettifyMiddleware”,繼 ...
  • 這兩天做項目的時候偶然發現項目中的保存功能的時候出現這樣的異常:異常詳細信息: System.Web.HttpRequestValidationException: 從客戶端(XXXX)中檢測到有潛在危險的 Request.Form 值。經過查詢調試發現,保存的文本中存在回車符,<br/>標簽作為參 ...
  • ios剛上線,這邊著手改成android版本,我開始使用的是unity2017.4.1版本 上傳谷歌商店是出現這兩個警告: 要支持64位,但是在2017版本上沒有找到64位的打包選項,猜測應該是版本的問題,上網查詢果然是 以下是我查詢的: https://www.cnblogs.com/cnxkey ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...