我有一个代码用于向SQL
添加一些行,但它不起作用。 Select
和Delete
正在运行,但不是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");
}
答案 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