用C#怎样做一个批量新增的功能呢?
用C#怎样做一个批量新增的功能呢?图片红色的字是字段名。就是可以填写多个数据新增。麻烦写个例子,谢谢了 --------------------编程问答-------------------- 表是这个,还有字段名
USE [CS]
GO
CREATE TABLE [dbo].[TbShInDetail](
[InDetailID] [numeric](18, 0) IDENTITY(1,1) NOT NULL,
[InID] [numeric](18, 0) NOT NULL,
[UnitPrice] [money] NULL,
[Amount] [money] NULL,
[SumPrice] [money] NULL,
[Note] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[HandlePeople] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[GoodsName] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
inid as 采购单号,HandlePeople as 采购人,GoodsName as 物品名称 ,Amount as 数量,UnitPrice as 单价,SumPrice as 金额,Note as 备注 --------------------编程问答-------------------- 没有会了吗? --------------------编程问答-------------------- 给你一个提示,用dataset的datatable绑定窗体显示的数据,当你对相关数据更改以后,提交datatable的更新就可以了,大概形式如下所示:
DataSet dataset = "select * from dual" // 取得数据
DataTable tb = dataset.table[0];
this.frmData.DataSource = dataset.table[0];
下面对tb中的数据更新
tb.rows[0][0] = "1111";
提交更新就可以了。
--------------------编程问答-------------------- 麻烦写出完整的代码呢?谢谢 --------------------编程问答-------------------- 你把你的源码发给我看看,看看你是如何填充数据的,这样才好帮你啊。 --------------------编程问答-------------------- 呵呵,我还没写代码,不知道怎下手,上面的效果图是我画出来的,我想实现这样的效果,才麻烦你们写个例子 --------------------编程问答-------------------- 可以这样写物品,单价,数量,金额备注就放在dataGridView1,其他的字段就可以放在textbox里。 --------------------编程问答-------------------- SqlConnection conn = new SqlConnection("Data Source=(local);Initial Catalog=StunetSystem;Integrated Security=True");
conn.Open();
string sql ="select * from TbShInDetail ";
SqlDataAdapter ad=new SqlDataAdapter(sql,conn);
SqlCommBuilder builder =new SqlCommBuilder(ad);
DataTable dt=new DataTable();
ad.Fill(dt);
dataGridView1.DataSource=dt;
然后你批量录入完成后,
ad.Update(dt);即可
--------------------编程问答-------------------- 呵呵,就是批量录不知道怎写 --------------------编程问答--------------------
我改成这个了,不过只能新增一条,批量的for循环不知道怎写了,麻烦大家了
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
SqlConnection conn;
SqlDataAdapter adapter;
private DataTable dbconn(string strSql)
{
conn.Open();
this.adapter = new SqlDataAdapter(strSql, conn);
DataTable dtSelect = new DataTable();
int rnt = this.adapter.Fill(dtSelect);
conn.Close();
return dtSelect;
}
private void button2_Click(object sender, EventArgs e)
{
conn = new SqlConnection("server=.;database=db_16;uid=sa;pwd=rt");
// SqlConnection sqlconnection = new SqlConnection(conn);
SqlDataAdapter sqldataadapter = new SqlDataAdapter("select * from tb_emp1 where 1=2", conn);
DataSet dataset = new DataSet();
sqldataadapter.Fill(dataset, "tb_emp1");
DataTable datatable = dataset.Tables[0];
DataRow datarow = datatable.NewRow();
datarow["name"] = this.dataGridView1.Rows[0].Cells[2].Value.ToString();
datarow["zcheng"] = this.dataGridView1.Rows[0].Cells[2].Value.ToString();
datarow["cort"] = this.dataGridView1.Rows[0].Cells[3].Value.ToString(); ;
datarow["sex"] = this.dataGridView1.Rows[0].Cells[4].Value.ToString();
datatable.Rows.Add(datarow);
SqlCommand insertcommand = new SqlCommand("INSERT INTO [tb_emp1]([name],[zcheng],[cort],[sex])" +
"VALUES(@name, @zcheng,@cort,@sex)", new SqlConnection("server=.;database=db_16;uid=sa;pwd=rt"));
insertcommand.Parameters.Add("@name", SqlDbType.NChar, 50, "name");
insertcommand.Parameters.Add("@zcheng", SqlDbType.NChar, 25, "zcheng");
insertcommand.Parameters.Add("@cort", SqlDbType.NChar, 255, "cort");
insertcommand.Parameters.Add("@sex", SqlDbType.NChar, 25, "sex");
sqldataadapter.InsertCommand = insertcommand;
sqldataadapter.Update(dataset, "tb_emp1");
} --------------------编程问答-------------------- 你有试我的方法先,
ad.Update(dt)
这就是实现批量录入功能的了!
哥 --------------------编程问答-------------------- 不需要这样的,你就把查询出的数据绑定至dataGridView1中,
SqlCommBuilder builder;
SqlDataAdapter ad;
DataTable dt;
把数据查询至dataGridView1
SqlConnection conn = new SqlConnection("Data Source=(local);Initial Catalog=StunetSystem;Integrated Security=True");
conn.Open();
string sql ="select * from TbShInDetail ";
ad=new SqlDataAdapter(sql,conn);
builder =new SqlCommBuilder(ad);
dt=new DataTable();
ad.Fill(dt);
dataGridView1.DataSource=dt;
然后你就在dataGridView1中录入N行都可以,在加一保存按钮(事件中)
加入代码
ad.Update(dt);
就可以了 --------------------编程问答-------------------- 采购单号和采购人不是在dataGridView1里的,怎处理呢? --------------------编程问答-------------------- 我想把采购单号和采购人放在textBox1里和物品,单价,数量,金额备注就放在dataGridView1,这个怎组合新增呢? --------------------编程问答-------------------- 那就FOR循环呗
可用这方式
private void button2_Click(object sender, EventArgs e)
{
conn = new SqlConnection("server=.;database=db_16;uid=sa;pwd=rt");
// SqlConnection sqlconnection = new SqlConnection(conn);
SqlDataAdapter sqldataadapter = new SqlDataAdapter("select * from tb_emp1 where 1=2", conn);
SqlCommBuilder builder =new SqlCommBuilder(sqldataadapter);
DataSet dataset = new DataSet();
sqldataadapter.Fill(dataset, "tb_emp1");
DataTable datatable = dataset.Tables[0];
for (int i=0;i<dataGridView1.Rows.Count;i++)
{
DataRow datarow = datatable.NewRow();
datarow["name"] = this.dataGridView1.Rows[i].Cells[0].Value.ToString();
datarow["zcheng"] = this.dataGridView1.Rows[i].Cells[1].Value.ToString();
datarow["cort"] = this.dataGridView1.Rows[i].Cells[2].Value.ToString(); ;
datarow["sex"] = this.dataGridView1.Rows[i].Cells[3].Value.ToString();
datarow["采购单号"]=TextBox1.Text;
datarow["采购人"]=TextBox2.Text;
datatable.Rows.Add(datarow);
}
sqldataadapter.Update(dataset, "tb_emp1"); --------------------编程问答-------------------- 应该这样,你代码可能有问题
那就FOR循环呗
可用这方式
private void button2_Click(object sender, EventArgs e)
{
conn = new SqlConnection("server=.;database=db_16;uid=sa;pwd=rt");
// SqlConnection sqlconnection = new SqlConnection(conn);
SqlDataAdapter sqldataadapter = new SqlDataAdapter("select * from tb_emp1 where 1=2", conn);
SqlCommBuilder builder =new SqlCommBuilder(sqldataadapter);
DataTable dt=new DataTable();
sqldataadapter.Fill(dt);
for (int i=0;i<dataGridView1.Rows.Count;i++)
{
DataRow datarow = dt.NewRow();
datarow["name"] = this.dataGridView1.Rows[i].Cells[0].Value.ToString();
datarow["zcheng"] = this.dataGridView1.Rows[i].Cells[1].Value.ToString();
datarow["cort"] = this.dataGridView1.Rows[i].Cells[2].Value.ToString(); ;
datarow["sex"] = this.dataGridView1.Rows[i].Cells[3].Value.ToString();
datarow["采购单号"]=TextBox1.Text;
datarow["采购人"]=TextBox2.Text;
dt.Rows.Add(datarow);
}
sqldataadapter.Update(dt); --------------------编程问答-------------------- 这种方法也不太行哦,出错 了,能不能加一下我QQ呢?83667664谢谢 --------------------编程问答-------------------- 批量循环插入就是了,想在画面插数据还是数据库? --------------------编程问答-------------------- 插到数据库里 --------------------编程问答-------------------- SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(cn);
sqlBulkCopy.DestinationTableName = "BOC_DATA";
sqlBulkCopy.BatchSize = table.Rows.Count;
if (table != null && table.Rows.Count != 0)
{
sqlBulkCopy.WriteToServer(table);
}
sqlBulkCopy.Close();
cn.Close(); --------------------编程问答--------------------
正在使用 --------------------编程问答-------------------- 这个才对,点错楼 --------------------编程问答-------------------- 批量操作也就是多条SQL语句在一起执行,也就是动态的组织SQL语句然后对sql进行操作,只要搞清楚这个了之后剩下的就是写循环拼接SQL了,希望对lz有所帮助。
补充:.NET技术 , 其他语言