Я новичок в C# и пытаюсь выяснить часть удаления и обновления моей таблицы. Я получаю часть вставки, потому что я не пытаюсь выбрать что-либо в своей таблице до нажатия кнопки. Однако с удалением и обновлением я смущен тем, как запрос соединяется с выбранной строкой в моей таблице. Если бы кто-нибудь мог указать мне в правильном направлении, это было бы здорово. Я использую набор данных и GridControl в devexpress. Я также должен использовать кнопки для выполнения событий и не буду использовать поля команд в сетке. И я работаю над созданием вставки с параметрами.Удаление строки из таблицы C#
Мой список:
public partial class PatientList : XtraForm
{
public PatientList()
{
InitializeComponent();
}
private void PatientList_Load(object sender, EventArgs e)
{
SAConnection conn = new SAConnection("dsn={SQL Anywhere 10};uid=dba;pwd=sql;databasefile=C:\\Users\\Kbaker1\\Desktop\\Training1.db;");
SADataReader rdr = null;
string Query = "SELECT * FROM patient";
SADataAdapter da = new SADataAdapter(Query, conn);
DataSet ds = new DataSet();
da.Fill(ds);
grdList.DataSource = ds.Tables[0];
try
{
conn.Open();
SACommand cmd = new SACommand(Query, conn);
rdr = cmd.ExecuteReader();
}
finally
{
if (rdr != null)
{
rdr.Close();
}
if (conn != null)
{
conn.Close();
}
}
}
private void btnNewPatient_Click(object sender, EventArgs e)
{
Edit editPat = new Edit();
editPat.Show();
}
private void btnEditPatient_Click(object sender, EventArgs e)
{
Edit editPat = new Edit();
editPat.Show();
}
private void btnDeletePatient_Click(object sender, EventArgs e)
{
PatientService ps = new PatientService();
ps.DeletePatient();
}
private void btnClose_Click(object sender, EventArgs e)
{
this.Close();
}
}
класса обслуживания, выполняющих операции:
public class PatientService
{
public void DataAccess()
{
}
public void CreatePatient(Patient patient)
{
SAConnection conn = new SAConnection();
SACommand cmd = new SACommand();
conn.ConnectionString = ("dsn={SQL Anywhere 10};uid=dba;pwd=sql;DBF=C:\\Users\\Kbaker1\\Desktop\\Training1.db;");
conn.Open();
cmd.Connection = conn;
cmd.CommandText = (@"INSERT INTO patient (patient_id, first_name, last_name, address, city, state, zipcode, phone, classification_id)
VALUES ('"
+ patient.PatientID + "','"
+ patient.FirstName + "','"
+ patient.LastName + "','"
+ patient.Address + "','"
+ patient.City + "','"
+ patient.State + "','"
+ patient.ZipCode + "','"
+ patient.Phone + "','"
+ patient.ClassificationID + "'); ");
cmd.ExecuteNonQuery();
conn.Close();
}
public void UpdatePatient()
{
}
public void DeletePatient()
{
SAConnection conn = new SAConnection();
conn.ConnectionString = ("dsn={SQL Anywhere 10};uid=dba;pwd=sql;DBF=C:\\Users\\Kbaker1\\Desktop\\Training1.db;");
conn.Open();
SACommand cmd = new SACommand("DELETE FROM patient WHERE patient_id = @patient_id");
cmd.Connection = conn;
cmd.ExecuteNonQuery();
conn.Close();
}
}
Просто предложение: посмотрите на Entity Framework, который заменяет все громоздкие инструкции T-SQL и дает вам объекты (DbContext), которые вы подключаете к своей базе данных. Затем манипуляции обычно составляют 2-3 строки кода. Я сказал, вы получаете IntelliSense? –
DataAdapter имеет метод Update, который может передавать каждое изменение, сделанное в сетке, в базовую базу данных. Проверьте документы SADataAdapter – Steve
Благодаря обоим! – user3034095