2012-08-03 56 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 
)