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); } 如果需要,更改代码逻辑. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |