[英]C# Sql Client: ALTER Table doesn't work
我有一个用于向SQL
添加一些行的代码,但是它不起作用。 Select
和Delete
有效,但ALTER TABLE
命令无效。
如果我仅将控制台输出复制并粘贴到Microsoft Management Sql Query
,那么它将起作用。 ( tmp1
被填充了一些名称, tmp2
被填充了示例CHAR(50))
编辑:我没有得到任何错误,在我的SQL Server的日志中,我没有看到被称为“ 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");
}
您不将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
被调用,适配器才会执行查询。
您没有正确设置值。 试试这个,它应该工作。
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"); }
我现在用Fill避免了它。 有点混乱,但还可以。 感谢Pawel所说的。
using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
{
DataTable dt = new DataTable();
sda.Fill(dt);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.