1. 程式人生 > >C#中"對於多個基表不支援動態SQL生成"的錯誤原因

C#中"對於多個基表不支援動態SQL生成"的錯誤原因

        public int CreateCmdsAndUpdate(DataGridView dgv)
        {
            using (OleDbConnection connection = new OleDbConnection(dbConnectionString))
            {
                string queryString = "select s.enrollmentid 序號, s.studentid 學號,firstname||' '||lastname 姓名," +
                    "Title 課程名,grade 成績 from Course c, studentgrade s,person p " +
                    "where c.courseid=s.courseid and p.personid=s.studentid order by 序號";
                OleDbDataAdapter adapter = new OleDbDataAdapter();
                adapter.SelectCommand = new OleDbCommand(queryString, connection);
                OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);
                
                connection.Open();
                DataTable dt = dgv.DataSource as DataTable;
                int i = adapter.Update(dt);

                return i;
            }
        }

若執行上述類似程式碼,則會出現 "對於多個基表不支援動態SQL生成"的錯誤提示,其原因是由於 queryString 中的SQL語句屬於多表查詢,而OleDbCommandBuilder則不支援多資料表聯合的增加、插入、刪除語句的自動生成,其只支援可以對映至資料庫內的單資料表查詢 "Select * from studentgrade" 這類的增刪改語句的自動生成。

注:

前提:不能用SqlCommandBuilder,那個東西玩玩可以,正式寫程式碼必須拋棄它,無論是效能還是功能都不達標,給初學者體驗用的一個類。
要求:會用MSDN,查詢SqlCommand相關幫助說明。這是MSDN的連結:

http://msdn.microsoft.com/ZH-CN/library/z4956bkc(v=VS.110,d=hv.2).aspx,也可以直接本機安裝。
查詢用ExecuteReader方法,修改用ExecuteNonQuery方法,批量提交有SqlDataAdapter 類,都是基於給定的SqlCommand操作的,其中都是自己編寫CommandText,而不借助SqlCommandBuilder。

相關推薦

C#"對於支援動態SQL生成"的錯誤原因

public int CreateCmdsAndUpdate(DataGridView dgv) { using (OleDbConnection connection = new OleDbConnection(db

c#“對於返回任何資訊的 SelectCommand 支援動態 SQL 生成錯誤的解決

 昨天在做C#一個小程式的時候也遇到了“對於不返回任何基表資訊的 SelectCommand 不支援動態 SQL 生成”的錯誤提示。經過GOOGLE上的搜尋,絕大多數的帖子都指出是由於表沒有定義主鍵引起的,但是我的表的確是有主鍵定義了的,在程式碼中關聯了主鍵也不行。最後終於解

c++配置環境的格式

alt bsp c++ ++ 分享 image acp tdi bin 例:環境1=$(QTDIR)\bin 環境2=$(PATH) 環境3=E:\軟件\辦公\Vimba_2.1\VimbaCPP\Bin\Win64 具體配置為 PATH=$(QTDIR)\bin%3b$(

fragment巢狀viewpager,vierpagerfragment,顯示 ...

現在好多應用流行一種佈局。底部幾個工具欄選項,上面也有類似tab的選項。 底部用RadioGroup控制fragment的切換。以上有五個fragment。 第一個fragment,代表著首頁。首頁又是一個類似tab的fragment,使用viewpager切換著兩

fragment巢狀viewpager,vierpagerfragment,顯示而且滑動卡頓

現在好多應用流行一種佈局。底部幾個工具欄選項,上面也有類似tab的選項。 底部用RadioGroup控制fragment的切換。以上有五個fragment。 第一個fragment,代表著首頁。首頁又是一個類似tab的fragment,使用viewpager切換著兩個fragment。  priv

Spring與Web框架(例如Spring MVC)漫談——關於Spring對於Web框架的支援

  在看Spring MVC的官方文件時,最後一章是關於Spring對於其它Web框架的支援(如JSF,Apache Struts 2.x,Tapestry 5.x),當然Spring自己的MVC框架Spring MVC就不用多說了。   這裡並不想討論其它的Web框架,而是記錄下這章開頭提到的關於Spri

c# 對於每次修改的程式 都必須重新手動生成 才能編譯的問題

     需要修改兩個地方 工具>> 選項>> 專案和解決方案>> 生成並執行>> 檢查“在執行時,當專案已經過時了”設定為“始終生成”或者“提示生成”

請教C#對於介面複選框時如何處理的問題

// 指數 -- 當對陣列按各位進行排序時,exp=1;按十位進行排序時,exp=10;... int exp; // 陣列a中的最大值 int max = getMax(arr); // 從個位開始,對陣列a按"指數"進行排序 for (exp = 1;

詳講:C#快速匯出sheet到excel的兩種方法(Cell和Range方法), 解決了(匯入時外部是預期的格式)

C# 匯出的表載入時報錯:外部表不是預期的格式。的解決方案 在網絡卡找了一些Excel匯出的方法,大部分能匯出,但時不能將匯出的Excel匯入。總是報:外部表不是預期的格式 找了好久終於找到了解決方案。 這是本人整理修改後的的可以實現匯出匯入的方法。供大家學習參考,方法就是用一個沒問題的

excel中將一張資料拆分成工作,按部門相同的拆分成單個工作,且單個工作名及為部門

在工作表名稱上點右鍵選檢視程式碼,貼上以下程式碼到彈出視窗.關閉彈出視窗 ALT+F8選中該巨集執行Sub 拆分工作表()Application.ScreenUpdating = FalseDim rng As Range, arr()endrow = Range("A65

轉換一個字段含有另外一張的id | | 行轉列

ret .net sub 模式 end posit tex 匹配 replace 1、Oracle Function --入參:表 id /* cxcyxm02 :操作表,含有一個存儲另一張表(xs0101)多個主鍵id的字段  ids :操作表的主鍵 i

在一個form實現submit不同的action

var ctype 編號 表單 顯示 col 格式 action 否則 在button中用JS的事件綁定onclick實現,如下: 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "

一個相同的欄位,以及springmvc接收相同物件問題

                                      &

能在DropDownList選擇

描述:在OnPreRender方法 ,為DropDownList繫結資料並將選中的值設為true,頁面顯示正常    當頁面跳轉時,又進行一次繫結,頁面報錯“不能在DropDownList中選擇多個項” 解決:   DetailType.DataSource = dt_DetailType;&n

Java實現匯出excel打包到zip檔案->供客戶端下載

業務需求:將需求方要的資料匯出excel表中。                 1.只發出一次請求                

EF的Include 在.NET Framework 和.net core 進行查詢的時候不同的寫法

下午正在開開心心擼程式碼的時候,老闆叫我過去說要問我問題,因為老闆最近莫名對.Net產生興趣,開始自己看書擼後臺,所以經常把我叫辦公室問我一些我也不懂的問題(畢竟我也是渣渣,老闆也算是推動我學習進步的源泉,每次問完我我都要去先自己學一遍,再去教老闆)。 問題如下  在專案中

c/c++ 一條語句包含i++時程式的執行情況

今天覆習高精度時,遇到了個小坑,於是試驗了下。 #include<iostream> using namespace std; int main() { int i = 1; int a[8] = {0, 1, 2, 3, 4, 5, 6, 7};//別忘

Mysql 一對的關係使用了索引的問題

我所用到的表有兩張,分別是 A表和B表。 A表 guess_id user_id 1 DD 2 CC 3 SS B表 b_id guess_id b_name 1

.NET/C# 你可以在程式碼 Main 函式,然後按需要隨時切換

.NET/C# 程式從 Main 函式開始執行,基本上各種書籍資料都是這麼寫的。不過,我們可以寫多個 Main 函式,然後在專案檔案中設定應該選擇哪一個 Main 函式。 你可能會覺得這樣沒有什麼用,不過如果你的應用程式在不同的編譯條件下有不同的啟動程式碼,或者

在資料庫查詢欄位的時候,能用物件接受

今天在做查詢從資料庫中查詢兩個欄位的問題的時候不知道是應該用物件接受,還是集合接受,開始的時候用物件接受 service層介面: User userUpdateByAccount(@Param("account") String account, @Param("phone") String phone)