使用LINQ将多个文本框插入到sql表的单独行中
本文关键字:sql 单独行 插入 LINQ 文本 使用 | 更新日期: 2023-09-27 18:12:58
使用LINQ将文本框的值插入sql表的单行的特定列中不是什么大问题,但是如何在新行中插入每个文本框的内容,例如,如果我们有5个文本框,那么它应该在sql表中创建5个新行。下面是我如何将文本框插入到单行的不同列中:
Table Name: tblModulRelayConfig
index fltCe fltUT1 fltUT2 fltUT3 fltUT4 fltUT5 fltUT6
1 75 Text1 Text2 Text3 Text4 Text5 Text6
2 76 Text1 Text2 Text3 Text4 Text5 Text6
using (myDataContext mydc= new myDataContext())
{
tblModulRelayConfig tblModuler = (from CE in mydc.tblCEs
where CE.fltCE == 75
select CE).FirstOrDefault();
if(tblModuler != null)//in order to update table
{
nyModul.fltUT1 = TextBox1.Text;
nyModul.fltUT2 = TextBox2.Text;
nyModul.fltUT3 = TextBox3.Text;
nyModul.fltUT4 = TextBox4.Text;
nyModul.fltUT5 = TextBox5.Text;
nyModul.fltUT6 = TextBox6.Text;
}
else // if it does no exist already
{
tblModulRelayConfig nyModul = new tblModulRelayConfig();
nyModul.fltUT1 = TextBox1.Text;
nyModul.fltUT2 = TextBox2.Text;
nyModul.fltUT3 = TextBox3.Text;
nyModul.fltUT4 = TextBox4.Text;
nyModul.fltUT5 = TextBox5.Text;
nyModul.fltUT6 = TextBox6.Text;
mydc.tblModulRelayConfigs.InsertOnSubmit(nyModul);
mydc.SubmitChanges();
}
}
但是如何创建一个表如下,我的意思是,而不是插入文本框值在单行,我想插入数据的每个文本框在新的行在单个按钮单击:
tblModulRelayConfig
index fltCe fltUTNr fltUT
1 75 1 Text1
2 75 2 Text2
3 75 3 Text3
4 75 4 Text4
5 75 5 Text5
6 75 6 Text6
我尝试了下面的代码,但没有break in循环,它只添加最后一个文本框的数据到表和break它只添加第一个文本框的值。我尝试使用的代码是从下面的链接:在单独的文本框中显示sql表行
var textbox = GetAll(this, typeof(TextBox));
tblModulRelayConfig nyKanal = new tblModulRelayConfig ();
foreach (Control c in textbox)
{
textNr++;
if (c is TextBox)
{
var tx = ((TextBox)c);
nyKanal.fltUTNr = textNr;
nyKanal.fltUT=tx.Text;
sls.tblModulRelayConfig .InsertOnSubmit(nyKanal);
sls.SubmitChanges();
break;
}
}
您可以试试这个解决方案。我用包含文本框名称的fltUTName
替换了fltUTNr
。这样你就有了一个更强的ui绑定:
index fltCe fltUTName fltUT
1 75 TexBox1 Text1
2 75 TexBox2 Text2
3 75 TexBox3 Text3
4 75 TexBox4 Text4
5 75 TexBox5 Text5
6 75 TexBox6 Text6
int fltCE_item = 75;
using (myDataContext mydc= new myDataContext()){
List<tblModulRelayConfig> tblModuler = (
from CE in mydc.tblCEs
where CE.fltCE == fltCE_item
select CE
);
foreach(TextBox tx in GetAll(this, typeof(TextBox)){
if(tblModuler.Count > 0){ //update table
foreach(var CE in tblModuler)
if(CE.fltUTName.Equals(tx.Name))
CE.fltUT = tx.Text;
}else{ //insert: index should be autoseeded into the db;
tblModulRelayConfig nyModul = new tblModulRelayConfig();
nyModul.fltCe = fltCE_item;
nyModul.fltUTName = tx.Name;
nyModul.fltUT = tx.Text;
mydc.tblModulRelayConfigs.InsertOnSubmit(nyModul);
}
}
mydc.SubmitChanges();
}