2011-12-01 16 views
0

我在.NET中創建Windows應用程序。它需要給終端用戶設計一張表的設施。動態創建SQL表格(Win Form應用程序中的表設計器)

基本上,這種形式的表單會有一些格式,就像我們在SQL Server Management studio中看到的一樣。一列用於數據類型(數字,文本等..而不是Int,Nvarchar)。

請有人知道如何做到這一點?任何人都知道任何可以幫助我的用戶控件的開源庫嗎?

編輯:

我還需要給機構以改變表。所以很顯然,如果在那裏進行了不適當的修改,將會引發異常。應用程序將處理它並向最終用戶顯示消息。

+0

只有MS SQL服務器需要支持。目前還沒有任何其他數據庫需要。 –

+0

你可能必須自己寫 - 我不確定是否有控制。這似乎不是一項複雜的任務 - 您只需根據用戶輸入生成「create table」腳本。 – danyloid

回答

2

如何使您的應用程序使用CREATE TABLEALTER TABLE SQL/DDL命令?

+0

是的,我們可以使用它。提出問題的理由是我們正在緊張的工作進度,所以如果我們得到任何圖書館或用戶控制,那麼我們不需要花時間進行測試和所有其他的東西。否則,我們需要從頭開始創建它,並使其可重用。 –

+0

你可以選擇這個解決方案,或者通過@ConradFrix的解決方案。無論哪種方式,你都必須爲此付出汗水。 –

0

只需要使用你動態地創建基於用戶的輸入

CREATE TABLE [dbo].[NewTable](
    [Id] [int] NOT NULL, 
    [LoginId] [varchar](128) NULL, 
    [EmailAddress] [nvarchar](256) NULL, 
    [LocationName] [char](30) NULL, 
    [DateAdded] [datetime] 
) 

請確保您連接到數據庫與用戶具有適當的權限創建表腳本CREATE TABLE。

0

基本上,您要做的就是獲取用戶輸入的數據,並將CREATE TABLE語句創建爲字符串,然後將其傳遞給SQLCommand,然後調用ExecuteNonQuery()。創建語句本身是非常簡單的數據解析;獲取GridView中每個單元格的值(如果沒有所有必要信息或沒有意義,則拋出異常),並將其粘貼到命令中。

我建議使用StringBuilder將字符串放在一起。在構建列列表時,您可能會使用循環或循環遍歷gridview的行,在這種情況下,使用「+」運算符的簡單字符串連接將會非常影響內存效率(字符串是不可變的;它們是創建的並且然後被銷燬,永遠不會被修改,每當你將一個字符串添加到另一個字符串時,將在內存中創建一個新的字符串,並且成爲新字符串的兩個字符串在GC線程運行之前也會在內存中,這會給垃圾收集器一個真正的鍛鍊)。