SQL命令在C#窗口窗体应用程序中不工作
问题描述:
我想通过我的Windows窗体应用程序(使用C#构建)在数据库的表中添加一个新列。SQL命令在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#执行相同的操作时,它不会抛出任何错误,但是在检查之后,该表没有要创建的新列。
任何帮助......怎么了?
P.S.我也检查了SQLConnectionString,它也连接到正确的数据库。
答
如@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());
}
您还没有执行你的命令。在'try'块末尾添加'cmd.ExecuteNonQuery();' – Habib 2014-10-28 14:14:35
也在查询中使用'QUOTENAME'请参阅:这篇文章:http://*.com/questions/20719449/c-sharp-alter-table -and-add-a-column-programmatically -asp-net-sql-server – Habib 2014-10-28 14:15:53
@Habib你不能参数化DML – 2014-10-28 14:19:06