C#Sql客户端:ALTER表不起作用

时间:2016-09-20 05:56:44

标签: c# sql .net sql-server alter-table

我有一个代码用于向SQL添加一些行,但它不起作用。 SelectDelete正在运行,但不是ALTER TABLE命令。

如果我将我的控制台输出复制并粘贴到Microsoft Management Sql Query,它就可以了。 (tmp1填充了一些名称,tmp2填充了示例CHAR(50))

编辑:我没有得到任何错误,在我的SQL服务器的日志中,我没有看到任何名为“Alter”的命令被执行。

 string tmp1, tmp2;
 tmp1 = addfrm.getTableName();
 tmp2 = addfrm.getType();

 string constring = @"Data Source=" + adr + ";Initial Catalog=" + dat + ";User ID=" + user + ";Password=" + pwd;
 try
 {
     using (SqlConnection con = new SqlConnection(constring))
     {
         string tmp = @"ALTER TABLE " + tbl + " ADD " + tmp1 + " " + tmp2;
         Console.WriteLine("Mein Befehl lautet: " + tmp);

         using (SqlCommand cmd = new SqlCommand(tmp, con))
         {
             cmd.CommandType = CommandType.Text;
             using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
             {
             }
         }
     }
 }

 catch (SqlException) 
 { 
     MessageBox.Show("Fehler"); 
 }

3 个答案:

答案 0 :(得分:1)

您不会将SQL查询发送到数据库。在SqlCommand上使用ExecuteNonQuery。而不是:

using (SqlCommand cmd = new SqlCommand(tmp, con))
{
    cmd.CommandType = CommandType.Text;
    using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
    {

    }
}

使用

using (SqlCommand cmd = new SqlCommand(tmp, con))
{
    cmd.ExecuteNonQuery();
}

在调用adapter.Fill之前,适配器不会执行查询。

答案 1 :(得分:0)

您没有正确设置值。试试这个它应该有用。

string tmp1, tmp2;
                tmp1 = addfrm.getTableName();
                tmp2 = addfrm.getType();

                string constring = @"Data Source=" + adr + ";Initial Catalog=" + dat + ";User ID=" + user + ";Password=" + pwd;
                try
                {
                    using (SqlConnection con = new SqlConnection(constring))
                    {
                        string tmp = @"UPDATE TABLE " + tbl + " SET Col1 = '" + temp1 +"',Col2='" + tmp2 +"'";

                        Console.WriteLine("Mein Befehl lautet: " + tmp);

                        using (SqlCommand cmd = new SqlCommand(tmp, con))
                        {
                            cmd.CommandType = CommandType.Text;
                            using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
                            {
    cmd.ExecuteNonQuery();
                            }
                        }
                    }
                }
                catch (SqlException) { MessageBox.Show("Fehler"); }

答案 2 :(得分:0)

我现在用Fill避开了它。它有点乱,但还可以。感谢Pawel说的。

-Druntime=studio