加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 08:42:28 所属栏目:百科 来源:网络整理
导读:我正在尝试使用C#从DataGridView向SQL Server数据库表中插入5条记录. 从我的代码中,它需要输入几个记录,但只插入数据库中的第一条记录.任何人都可以通过单击保存按钮帮助我在数据库中保存5条记录吗? 这是我的代码: DataSet ds = new DataSet(); SqlConnect
我正在尝试使用C#从DataGridView向SQL Server数据库表中插入5条记录.

从我的代码中,它需要输入几个记录,但只插入数据库中的第一条记录.任何人都可以通过单击保存按钮帮助我在数据库中保存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,'" + col3 + "')";
    this.getcom(insert_sql);
}

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读