2012-08-03 57 views
0

如何使用sql查詢更改列的標識規範?只使用C#編碼。請幫助。 這裏我想在下面的代碼中創建新表時添加一列作爲PaperId。 我需要的列屬性分配身份規格是和身份增量1如何使用sql查詢更改列的標識規範?

if (rbtnEng.Checked == true) 
{ 
    con.Open(); 
    char[] arr = new char[] { 'n', 'g', 'l', 'i', 's', 'h' }; 
    string str = "CREATE TABLE " + Label1.Text.Trim() + txtpaperset.Text.Trim() 
    + rbtnEng.Text.TrimEnd(arr) + "(" + "quesNo int NOT NULL PRIMARY KEY, " 
    + "question varchar(1000) NOT NULL," + "ansA varchar(500) NOT NULL, " 
    + "ansB varchar(500) NOT NULL, " + "ansC varchar(500) NOT NULL, " 
    + "ansD varchar(500) NOT NULL, " + "rightAns varchar(50) NOT NULL " + ")"; 
    SqlCommand cmd = new SqlCommand(str, con); 
    cmd.ExecuteNonQuery(); 
    Label2.Text = Label1.Text + txtpaperset.Text + rbtnEng.Text.TrimEnd(arr); 
    lblerrormsg.Text = "PaperSet Created Sucessfully!"; 
    txtpaperset.ReadOnly = true; 
    btnpaper.Enabled = false; 
    rbtnEng.Enabled = false; 
    rbtnMar.Enabled = false; 
    UpdatePanel2.Visible = true; 
    txtQuestNo.Text = Convert.ToString(1); 
    con.Close(); 
} 

else if.... 

回答

2

首先,這是不好的。不要添加這麼多的字符串;使用string.Format()

string str = string.Format("CREATE TABLE {0}{1}{2} (" 
+ "quesNo int NOT NULL PRIMARY KEY, question varchar(1000) NOT NULL, " 
+ "ansA varchar(500) NOT NULL, ansB varchar(500) NOT NULL, " 
+ "ansC varchar(500) NOT NULL, ansD varchar(500) NOT NULL, " + 
+ "rightAns varchar(50) NOT NULL)", 
Label1.Text.Trim(), 
txtpaperset.Text.Trim(), 
rbtnEng.Text.TrimEnd(arr)); 

但這只是我的看法。

Here's how to create an identity column

PaperId int identity(1,1) 

只需將它添加到您的str字符串。

+1

實際上string.Format也不是一個很好的選項。任何時候你接受用戶輸入並將它傳遞給一個SQL查詢,你都應該使用參數化查詢。 – 2012-08-03 21:30:15

+0

@TimCopenhaver同意 – Nathan 2012-08-03 21:31:03

1

如果你只需要一個標識列添加到創建表腳本,那麼這裏有一個例子:

create table Data 
(
Id int identity(1,1) NOT NULL 
)