Я пишу небольшую часть программного обеспечения и один из моих методов, включая обновление определенного столбца в моей базе данных.Мне удалось добиться успеха с помощью этого кода:
private void btnTestInstall_Click(object sender, EventArgs e)
{
string c = txtChange.Text;
var uid = myDataTest.Rows[0].Cells[1].Value.ToString();
DataSet ds = new DataSet();
string sql = "SELECT id FROM installations WHERE id = '" + c + "'";
SqlCommand cmx = new SqlCommand(sql, conn);
conn.Open();
cmx.ExecuteNonQuery();
SqlDataAdapter da = new SqlDataAdapter(cmx);
da.Fill(ds);
if (ds.Tables[0].Rows.Count > 0)
{
string select = ds.Tables[0].Rows[0]["id"].ToString();
if (select == c)
{
SqlCommand cmd = conn.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "UPDATE aspnet_usersinroles SET InstallationId = '" + c + "' WHERE userid = '" + uid + "'";
cmd.ExecuteNonQuery();
MessageBox.Show("Installations ID er ændret til " + c);
}
else
{
MessageBox.Show(c + " does not exist");
}
}
else
{
MessageBox.Show(c + " does not exist");
}
conn.Close();
}
Но затем мне пришлось перенести его в другой проект, где у меня есть слой данных.Я разделил код, но ничего не изменил, чтобы внести в него серьезные изменения.Тем не менее, я получаю 'Преобразование не удалось при преобразовании строки символов в uniqueidentifier.' , когда я пытаюсь запустить его в новом проекте.В новом проекте он разделен следующим образом: Фрагмент формы:
public void btnTestInstall_Click(object sender, EventArgs e)
{
string c = txtChange.Text;
var uid = myDataTest.Rows[0].Cells[2].ToString();
DTestUsersDB tu = new DTestUsersDB();
tu.InstallChange(c, uid);
}
Фрагмент уровня данных:
public void InstallChange(string c, string uid)
{
DataSet ds = new DataSet();
string sql = "SELECT id FROM installations WHERE id = '" + c + "'";
SqlCommand cmx = new SqlCommand(sql, conn);
conn.Open();
cmx.ExecuteNonQuery();
SqlDataAdapter da = new SqlDataAdapter(cmx);
da.Fill(ds);
if (ds.Tables[0].Rows.Count > 0)
{
string select = ds.Tables[0].Rows[0]["id"].ToString();
if (select == c)
{
SqlCommand cmd = conn.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "UPDATE aspnet_usersinroles SET InstallationId = '" + c + "' WHERE userid = '" + uid + "'";
cmd.ExecuteNonQuery();
}
else
{
}
}
else
{
}
conn.Close();
}
Единственное, что изменилось, это номер столбца в
var uid = myDataTest.Rows[0].Cells[2].ToString();
потому что в новом проекте я добавил столбец перед ним.