Tôi đang cố chèn 5 bản ghi vào bảng cơ sở dữ liệu SQL Server từ DataGridView bằng C#.Cách lưu trữ nhiều bản ghi trong SQL Server bằng cách sử dụng DataGridView
Từ mã của tôi, nó lấy đầu vào của một số bản ghi nhưng chỉ chèn bản ghi đầu tiên vào cơ sở dữ liệu. Ai có thể giúp tôi để lưu 5 hồ sơ trong cơ sở dữ liệu bằng một nhấp chuột duy nhất của nút lưu?
Đây là mã của tôi:
DataSet ds = new DataSet();
SqlConnection cs = new SqlConnection(@"Data Source=DELL-PC;Initial Catalog=Image_DB;Integrated Security=True");
SqlDataAdapter da = new SqlDataAdapter();
SqlCommand cmd = new SqlCommand();
BindingSource Input = new BindingSource();
DataView dview = new DataView();
private void Form1_Load(object sender, EventArgs e)
{
//create a DataGridView Image Column
DataGridViewImageColumn dgvImage = new DataGridViewImageColumn();
//set a header test to DataGridView Image Column
dgvImage.HeaderText = "Images";
dgvImage.ImageLayout = DataGridViewImageCellLayout.Stretch;
DataGridViewTextBoxColumn dgvId = new DataGridViewTextBoxColumn();
dgvId.HeaderText = "ID";
DataGridViewTextBoxColumn dgvName = new DataGridViewTextBoxColumn();
dgvName.HeaderText = "Name";
dataGridView1.Columns.Add(dgvId);
dataGridView1.Columns.Add(dgvName);
dataGridView1.Columns.Add(dgvImage);
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
dataGridView1.RowTemplate.Height = 120;
dataGridView1.AllowUserToAddRows = false;
}
// button add data to dataGridView
// insert image from pictureBox to dataGridView
private void btn_Add_Click(object sender, EventArgs e)
{
MemoryStream ms = new MemoryStream();
pictureBox1.Image.Save(ms, pictureBox1.Image.RawFormat);
byte[] img = ms.ToArray();
dataGridView1.Rows.Add(txt_UserID.Text, txt_Name.Text, img);
}
// browse image in pictureBox1 Click
private void pictureBox1_Click(object sender, EventArgs e)
{
OpenFileDialog opf = new OpenFileDialog();
opf.Filter = "Choose Image(*.jpg; *.png; *.gif)|*.jpg; *.png; *.gif";
if (opf.ShowDialog() == DialogResult.OK)
{
pictureBox1.Image = Image.FromFile(opf.FileName);
}
}
private void btn_Save_Click(object sender, EventArgs e)
{
for (int i = 5; i < dataGridView1.Rows.Count; i++)
{
string col1 = dataGridView1[0, dataGridView1.CurrentCell.RowIndex].Value.ToString();
string col2 = dataGridView1[1, dataGridView1.CurrentCell.RowIndex].Value.ToString();
string col3 = dataGridView1[2, dataGridView1.CurrentCell.RowIndex].Value.ToString();
string insert_sql = "INSERT INTO Input(UserID, UserName, PassImage) VALUES ('" + col1 + "','" + col2 + "','" + col3 + "')";
this.getcom(insert_sql);
}
MessageBox.Show("Record Added");
}
public SqlConnection GetSqlConnection() //connection function
{
string str_sqlcon = "Data Source=DELL-PC;Initial Catalog=Image_DB;Integrated Security=True";
SqlConnection mycon = new SqlConnection(str_sqlcon);
mycon.Open();
return mycon;
}
public void getcom(string sqlstr) //function for adding rows
{
SqlConnection sqlcon = this.GetSqlConnection(); // Watch out same string type as GetSQLConnection function
SqlCommand sqlcom = new SqlCommand(sqlstr, sqlcon);
sqlcom.ExecuteNonQuery();
sqlcom.Dispose();
sqlcon.Close();
sqlcon.Dispose();
}
Cảm ơn rất nhiều! nó làm việc .... – Sumi
Bạn có thể nói, làm thế nào tôi có thể hạn chế người dùng cung cấp cho đầu vào chính xác 5 hồ sơ nếu không một tin nhắn sẽ được tạo ra. – Sumi
thực hiện thay đổi trong ** cho vòng lặp **, -> 'cho (i = 0; i <6; i ++)' do đó, điều này sẽ chỉ chèn 5 bản ghi. Nếu bạn muốn hiển thị thông báo, hãy sử dụng các sự kiện khách hàng datagridview hoặc thử logic trong ** if ** 'if (dataGridView1.Rows.count> 5)'. @ Sumi – Balaji