Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用c向sql server添加列、说明和列类型#_C#_Sql Server 2012 - Fatal编程技术网

C# 如何使用c向sql server添加列、说明和列类型#

C# 如何使用c向sql server添加列、说明和列类型#,c#,sql-server-2012,C#,Sql Server 2012,我有一个字段列表,其中包含需要添加到表中的描述和类型 例如,SomeField/SomeDescription/Decimal 我如何使用c#将这些带有描述和类型的列添加到sql server 2012数据库中?我知道如何通过sql添加列,但我需要能够在c#中这样做: string connection = "your connection string"; try { using(SqlConnection conn = new SqlConnection(connection))///a

我有一个字段列表,其中包含需要添加到表中的描述和类型

例如,SomeField/SomeDescription/Decimal

我如何使用c#将这些带有描述和类型的列添加到sql server 2012数据库中?我知道如何通过sql添加列,但我需要能够在c#

中这样做:

string connection = "your connection string";
try
{
  using(SqlConnection conn = new SqlConnection(connection))///add your connection string
  {
    String sql="ALter Table MyTable add SomeField Decimal(18,3)";
    conn.Open();
    using( SqlCommand command = new SqlCommand(sql,conn))
    {
      command.ExecuteNonQuery();
    }
  }
}
catch (Ecxeption ex)
{
 MessageBox.Show(ex.Message);
}

这是我想出的解决办法。
基本上,我使用sql添加了列(即altertable等…
然后我调用了一个现有的sql存储过程:sp_addextendedproperty

string[] allLines = File.ReadAllLines(@"C:\Table.csv");

            var query = from line in allLines
                        let data = line.Split(',')
                        select new
                        {
                            FieldName = data[0],
                            Description = data[1]
                        };


            try
            {
                string connection = "my connection string";
                using (SqlConnection conn = new SqlConnection(connection))///add your connection string
                {                    
                    SqlCommand command = new SqlCommand();
                    conn.Open();

                    using (SqlTransaction trans = conn.BeginTransaction())
                    {
                        command.Connection = conn;
                        command.Transaction = trans;

                        foreach (var item in query)
                        {
                            String sql = string.Format("ALTER TABLE MyTable ADD {0} Decimal(18,6)", item.FieldName.ToString());
                            command.CommandText = sql;
                            command.ExecuteNonQuery();
                        }

                        trans.Commit();
                    }


                    conn.Close();
                    conn.Open();
                    SqlTransaction transaction = conn.BeginTransaction();

                    using (SqlCommand cmd = new SqlCommand("sp_addextendedproperty", conn, transaction))
                    {


                            cmd.CommandType = CommandType.StoredProcedure;


                            foreach (var item in query)
                            {
                                cmd.Parameters.Clear();

                                cmd.Parameters.Add("@name", SqlDbType.VarChar).Value = "MS_Description";
                                cmd.Parameters.Add("@value", SqlDbType.VarChar).Value = item.Description.ToString();
                                cmd.Parameters.Add("@level0type", SqlDbType.VarChar).Value = "SCHEMA";
                                cmd.Parameters.Add("@level0name", SqlDbType.VarChar).Value = "dbo";
                                cmd.Parameters.Add("@level1type", SqlDbType.VarChar).Value = "TABLE";
                                cmd.Parameters.Add("@level1name", SqlDbType.VarChar).Value = MyTable;
                                cmd.Parameters.Add("@level2type", SqlDbType.VarChar).Value = "COLUMN";
                                cmd.Parameters.Add("@level2name", SqlDbType.VarChar).Value = item.FieldName.ToString();


                                cmd.ExecuteNonQuery();
                            }

                            transaction.Commit();

                    }                    
                }
            }
            catch (Exception ex)
            {

                MessageBox.Show(ex.Message);
            }   

是的,但我也需要向列中添加说明。对不起,您所说的列说明是什么意思?在sql server中,可以添加列说明。如果在VisualStudio中签出列的属性,您将看到一个描述属性,可以在其中描述该列