问题描述
我有100个Textbox的信息要提交到数据库中有没有循环语句可以批量提交不需要一行代码提交一个数据
解决方案
解决方案二:
你也真的可以,100个,干嘛不用datagrid?
解决方案三:
http://topic.csdn.net/u/20111128/09/bcd9d391-a292-4f9a-9e1a-81155131fb3c.html?38859
解决方案四:
引用1楼denqh的回复:
你也真的可以,100个,干嘛不用datagrid?
LZ可能是一个修改页面吧
解决方案五:
sql中用stringbuild的拼接
解决方案六:
一行一行放进去肿么啦?
解决方案七:
我说的存入数据库是存入界面上录入的信息比如界面上有100个这样的textbox:姓名【】性别【】等等。。。
解决方案八:
///<summary>///带事务的批量操作数据。///</summary>///<paramname="sqlInsert">SQL</param>///<returns>操作是否成功</returns>publicstaticboolOperateDatasWithTransaction(List<string>sqlList){OracleConnectionmyConnection=newOracleConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnStrOrcl"]);myConnection.Open();OracleCommandmyCommand=myConnection.CreateCommand();OracleTransactionmyTrans;//StartalocaltransactionmyTrans=myConnection.BeginTransaction(IsolationLevel.ReadCommitted);//AssigntransactionobjectforapendinglocaltransactionmyCommand.Connection=myConnection;myCommand.Transaction=myTrans;try{foreach(stringiteminsqlList){myCommand.CommandText=item;myCommand.ExecuteNonQuery();}myTrans.Commit();returntrue;}catch(Exception){myTrans.Rollback();returnfalse;}finally{myConnection.Close();}}
解决方案九:
看看有没有比较简单的方法么
解决方案十:
用事务控制
解决方案十一:
不一行一行放怎么放啊?数据库它处理也是一行行处理的啊。批处理对你来说是透明的啊。类似于在宏观上并行,微观上串行的道理哦。我晕啊啊啊啊啊啊啊啊,一口吃不完的,要分开来吃,一口一口地吃啊
解决方案十二:
该回复于2011-11-28 14:03:15被版主删除
解决方案十三:
10楼有点误解我的意思了我的意思是把若干的信息用一整段代码完成存入,而不是一行代码存入一个信息。
解决方案十四:
做软件做到你这样,我真的有点不明白了,为什么要用100个textbox,用这么多textbox你保存语句真是有得你拼了。
解决方案十五:
问题就是有那么多的textbox要存入啊。。。所以就想问问有没有啥方法
解决方案:
.......................................List<string>ooxx=newList<string>();。。。。aa//待处理数据for(inti=0;i<100;i++){ooxx.Add(@"insertintotbvalues('"+aa[i]+"')");}OperateDatasWithTransaction(ooxx);.................,...........
解决方案:
不行你扁我
解决方案:
15楼的这个ooxx是亮点。。。
解决方案:
引用17楼andyha2008的回复:
15楼的这个ooxx是亮点。。。
啥亮点啊啊啊啊啊啊啊
解决方案:
我的回复都被鹳狸猿删了啊,
解决方案:
11楼呢?
解决方案:
引用20楼hhqsy的回复:
11楼呢?
11楼去火星度假了~
解决方案:
引用21楼andyha2008的回复:
引用20楼hhqsy的回复:11楼呢?11楼去火星度假了~
解决方案:
研究表明,批量操作数据时,为了数据的完整性事务是必需的。
解决方案:
该回复于2011-11-28 15:44:43被版主删除
解决方案:
你去查查有关BCP的东西,网上不少。之不用BCP的时候,排错有点麻烦,另外数据库一旦增、删、修改了字段之后,你的程序就需要修改
解决方案:
字符串的每个sql用分号分隔即可,SqlServer和Oracle都支持stringsql=@"insertxxx;insertxxx;updatexxx;deletexxx;";
解决方案:
可以用事务来做,具体代码参考。DataSetdt=newDataSet();SqlConnectioncon=newSqlConnection(Configurations.Conn);con.Open();SqlTransactionstion=con.BeginTransaction(IsolationLevel.ReadCommitted);try{SqlDataAdaptersdp=newSqlDataAdapter();SqlCommandcommselect=newSqlCommand();commselect.Connection=con;commselect.CommandText="selectpassword,Names,Address,Pid,ImagefromUsers";sdp.SelectCommand=commselect;//首先要指定selectitem,并且字段要指定清楚,和insert字段个数和名称一致SqlCommandBuilderscom=newSqlCommandBuilder(sdp);sdp.SelectCommand.Transaction=stion;sdp.Fill(dt,"Users");DataTabledts=dt.Tables["Users"].Clone();DataRowdr=null;for(inti=1;i<6;i++){dr=dts.NewRow();dr["Names"]="Jeep"+i.ToString();dr["password"]=i.ToString();dr["Address"]="第12"+i.ToString()+"街道";dr["Pid"]=i+8;dr["Image"]=null;dts.Rows.Add(dr);}//通过对表值的修改,实现方法Update(table)dts.AcceptChanges();foreach(DataRowrowindts.Rows)row.SetAdded();SqlParameter[]parsup=newSqlParameter[]{newSqlParameter("@Names",SqlDbType.VarChar,10,"Names"),newSqlParameter("@password",SqlDbType.VarChar,20,"password"),newSqlParameter("@Address",SqlDbType.VarChar,40,"Address"),newSqlParameter("@Pid",SqlDbType.Int,4,"Pid"),newSqlParameter("@Image",SqlDbType.Image,200,"Image")};SqlCommandcommins=newSqlCommand();commins.CommandText="InsertintoUsersvalues(@Names,@password,@Address,@Pid,@Image)";sdp.InsertCommand=commins;//insertcom语句sdp.InsertCommand.Transaction=stion;commins.Parameters.AddRange(parsis);SqlCommandBuildericom=newSqlCommandBuilder(sdp);Console.WriteLine(sdp.Update(dts));dts.AcceptChanges();}catch(SqlExceptionex){Console.WriteLine(ex.ToString());stion.Rollback();}stion.Commit();
解决方案:
这位xd说的是SqlBulkCopy,这玩意只能Insert,不能做别的事情引用25楼jy251的回复:
你去查查有关BCP的东西,网上不少。之不用BCP的时候,排错有点麻烦,另外数据库一旦增、删、修改了字段之后,你的程序就需要修改
解决方案:
他是一行,但字段有100个.类似INSERTINTOA(A1,A2,...,A100)VALUES('A1','A2',....,'A100')是吧!需要拼的是这么多字段.你可以将控件的名称定义与数据库列名一样,通过循环读取页面上(窗体)的所有控件,最后拼成SQL.如果界面上有不需要更插入的控件,则按一定的方式命名.如:A_A1表示A1字段,只要是A_开头的均是需要插入数据库的,而其他开头的则不需要.不过再怎么会有上百个字段呢?即便有一条信息有这么多的字段,也应该分多个表来装载,按类别来分,这样根据不同需要查询时才会有较好的性能呀.
解决方案:
新来的,希望能多多学习!
解决方案:
databindMS自带的控件也有这个了,可以去搞下
解决方案:
该回复于2011-11-29 09:07:41被版主删除
解决方案:
在数据库里写个事务,将值传进去调用事务
解决方案:
该回复于2011-11-29 09:08:32被版主删除
解决方案:
可以用一个for循环把那些写成一个插入多行的sql语句啊,这样就与数据库交互一次就完成了。语法:insert表(列,列,列)select值1,值2,值3union值1,值2,值3