SQL命令在C#Windows窗体应用程序中不起作用

本文关键字:应用程序 不起作用 窗体 C#Windows 命令 SQL | 更新日期: 2023-09-27 18:28:04

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

我创建了一个方法CreateFieldNameInTableData(字符串FieldName,字符串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#执行同样的操作时,它没有抛出任何错误,但经过检查,该表没有要创建的新列。

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

附言:我还检查了SQLConnectionString,它也连接到了正确的数据库。

SQL命令在C#Windows窗体应用程序中不起作用

正如@TarasB所建议的,comm.ExecuteNonQuery()丢失,SQL查询未由c#SQLClient执行。回顾这一错误,感觉就像是"小学生的错误"。

最终工作代码如下:

         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());
            }