locked
FAQs: 如何用C#为SQL Server数据库创建一个新表? RRS feed

  • 问题

  • 为了帮助大家更好地学习 LINQ to SQL 技术,微软论坛技术支持团队编辑了一些列的 LINQ to SQL 常见问题及解答" 精华帖。

    本帖的主题是:如何用C#为SQL Server数据库创建一个新表?

    如果您觉得这个帖子对您的学习、工作有所帮助,请再把这个帖子分享给你的同学、同事和朋友。

    如果您想阅读更多的 "LINQ to SQL 常见问题及解答",请打开索引页面:

    http://social.msdn.microsoft.com/Forums/zh-CN/adonetzhchs/thread/f968dfe5-f9e3-4ed0-9c7f-cf26837ea828


    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    2011年5月3日 9:14

答案

  • 有两种方法来为数据库创建一个新表,

    1.       我们可以用ADO.NET写出并执行T-SQL语句来创建表:

           private void CreateTableBtn_Click(object sender, System.EventArgs e)

            {

                // 打开连接        

                if (conn.State == ConnectionState.Open)

                    conn.Close();

                ConnectionString = "Integrated Security=SSPI;" +

                "Initial Catalog=mydb;" +

                "Data Source=localhost;";

                conn.ConnectionString = ConnectionString;

     

                conn.Open();

     

                sql = "CREATE TABLE myTable" +

                "(myId INTEGER CONSTRAINT PKeyMyId PRIMARY KEY," +

                "myName CHAR(50), myAddress CHAR(255), myBalance FLOAT)";

                cmd = new SqlCommand(sql, conn);

                cmd.ExecuteNonQuery();

            }

     

     

    2.       我们可以引用SMO库并用SMO函数来创建一个表

    private void CreateTableBtn_Click(object sender, System.EventArgs e)

            {

                // 建立数据库服务器

                string connectionString = "...";

                SqlConnection connection =

                     new SqlConnection(connectionString);

                Server server =

                     new Server(new ServerConnection(connection));

     

                // 在我的个人数据库中创建表

                Database db = server.Databases["mydb"];

                // 建立TestTable的新表

                Table newTable = new Table(db, "TestTable");

                // 添加主键ID

                Column idColumn = new Column(newTable, "ID");

     

                idColumn.DataType = DataType.Int;

                idColumn.Nullable = false;

                idColumn.Identity = true;

                idColumn.IdentitySeed = 1;

                idColumn.IdentityIncrement = 1;

     

                // 添加"Title"

                Column titleColumn = new Column(newTable, "Title");

                titleColumn.DataType = DataType.VarChar(50);

                titleColumn.Nullable = false;

     

                // Table 对象添加列

                newTable.Columns.Add(idColumn);

                newTable.Columns.Add(titleColumn);

     

                // 为表创建一个主键的索引

                Index index = new Index(newTable, "PK_TestTable");

                index.IndexKeyType = IndexKeyType.DriPrimaryKey;

     

                // 主键索引包括1 "ID"

                index.IndexedColumns.Add(new IndexedColumn(index, "ID"));

     

                //表中添加一个新的索引.

                newTable.Indexes.Add(index);

     

                // 在数据库中实际创建一个表

                newTable.Create();

            }

     

    相关帖子:

     

    http://www.c-sharpcorner.com/UploadFile/mahesh/CreatingDBProgrammaticallyMCB11282005064852AM/CreatingDBProgrammaticallyMCB.aspx

    http://social.msdn.microsoft.com/Forums/en/adodotnetdataproviders/thread/4929a0a8-0137-45f6-86e8-d11e220048c3

    http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataproviders/thread/ed6e07c6-1876-43cd-9bd4-f69dc22a7d58
    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    2011年5月3日 9:15