SQL命令无法在C#Windows窗体应用程序中工作

时间:2014-10-28 14:13:31

标签: c# .net sql-server tsql windows-forms-designer

我正在尝试通过我的Windows窗体应用程序(使用C#构建)在数据库的表中添加新列。

我创建了一个方法CreateFieldNameInTableData(string FieldName,string TableName),它传递变量'FieldName'的名称,该变量是要添加到表的列的名称'TableName',可以指定由用户。

尝试将列添加到表中的此方法的代码如下:

private void CreateFieldNameInTableData(string FieldName, string AssetTypeCode)
        {
            SqlConnection conn = new SqlConnection(SQLConnectionString);
            SqlCommand comm = null;
            try
            {
                try
                {
                    comm = conn.CreateCommand();
                    comm.CommandText = "ALTER TABLE [AS_" + TableName + "_DATA] ADD " + FieldName + " VARCHAR(30)";
                    comm.CommandType = CommandType.Text;
                    comm.CommandTimeout = 30;   //30 seconds
                    conn.Open();
                }
                catch (SqlException err)
                {
                    MessageBox.Show("SqlException Error : " + err.Message.ToString());
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Exception Error : " + ex.Message.ToString());
            }
            finally
            {
                conn.Close();
            }
        }

当我在Server Management Studio中使用相同的SQL脚本时,它成功地在表AS_TableName_DATA中创建了列,但是当我尝试使用C#执行相同操作时,它不会抛出任何错误但是在检查之后, table没有要创建的新列。

任何帮助......出了什么问题?

P.S。我还检查了SQLConnectionString,它也连接到正确的数据库。

1 个答案:

答案 0 :(得分:2)

正如@TarasB所建议的那样,缺少comm.ExecuteNonQuery()并且c#SQLClient没有执行SQL查询。回顾这个错误感觉就像一个男生的错误'。

最终的工作代码如下:

         try
            {
                comm = conn.CreateCommand();
                comm.CommandText = "ALTER TABLE [AS_" + TableName + "_DATA] ADD [" + FieldName + "] VARCHAR(30)";
                comm.CommandType = CommandType.Text;
                comm.CommandTimeout = 120;   //120 seconds
                conn.Open();
                comm.ExecuteNonQuery();
            }
            catch (SqlException err)
            {
                MessageBox.Show("SqlException Error : " + err.Message.ToString());
            }