gpt4 book ai didi

c# - 如何使用 DataGridView 在 SQL Server 中存储多条记录

转载 作者:太空狗 更新时间:2023-10-29 21:17:08 24 4
gpt4 key购买 nike

我正在尝试使用 C# 从 DataGridView 将 5 条记录插入到 SQL Server 数据库表中。

在我的代码中,它需要输入多条记录,但只在数据库中插入第一条记录。任何人都可以通过单击保存按钮帮助我在数据库中保存 5 条记录吗?

这是我的代码:

    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();
}

最佳答案

问题出在这个 "for " 循环中,您没有在 for 循环中使用 i

最好试试这个。

for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
string col1 = dataGridView1.Rows[i].Cells[0].Value.ToString();
string col2 = dataGridView1.Rows[i].Cells[1].Value.ToString();
string col3 = dataGridView1.Rows[i].Cells[2].Value.ToString();
string insert_sql = "INSERT INTO Input(UserID, UserName, PassImage) VALUES ('" + col1 + "','" + col2 + "','" + col3 + "')";
this.getcom(insert_sql);
}

如果需要,更改代码逻辑。

关于c# - 如何使用 DataGridView 在 SQL Server 中存储多条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30277792/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com