动态插入SQL数据。

air123456789 2010-07-19 03:08:06
use aaa; insert into aa values ('123','123')
这是在表中插入数据

我是按照表的列数动态的生成了 和表列数一样的TextBox
那这样 如果要插入数据该怎么写?。
...全文
500 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
e251396 2010-07-19
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 air123456789 的回复:]
string sql = "insert into 表(”+strName1+“,”+strName2+“) values (”+strValue1+“,”+strValue2+“)“

这样写不行。 我又不知道有几个strValue 怎么知道写到几?
[/Quote]

for循环
拼出values后面的字符串
comrdliyang 2010-07-19
  • 打赏
  • 举报
回复
学习!
zjx198934 2010-07-19
  • 打赏
  • 举报
回复
定义一个对象public textboxObject{string name;string value}
首先实例化一个LIst<textboxObject> textboxObjectList然后从数据库中取出字段名添加每个textBox的时候实例化一个textboxObject 然后给它赋值textboxObject.name = 字段名+唯一标示 textBox的ID也设为一样,接着textboxObjectList.add(textboxObject);
当你页面提交的时候用Forecah(textboxObject in textboxObjectList){获取到页面的所有TextBox控件判断它的Id存在于textboxObject.Name中的话,就把这个TextBox的值赋给这个textboxObject.value}
好了 这样就获取到了所有拟要存入数据库的值,然后循环这个LIst就组装SQL就不用多说了吧,当然你可以在上面那个循环中作这个事情。这样还不能理解,我真的就没话说了》。。。
miaoyu04 2010-07-19
  • 打赏
  • 举报
回复

declare @columnName varchar(10)
declare @sql nvarchar(4000)
set @columnName ='字段名'
set @sql='select top 1 '+@columnName +' from 表'
exec (@sql)
songjd 2010-07-19
  • 打赏
  • 举报
回复
上面应该加个空格

"insert into table_name" + colStr + " " + valStr;
air123456789 2010-07-19
  • 打赏
  • 举报
回复
还是搞不懂。
songjd 2010-07-19
  • 打赏
  • 举报
回复

生成textbox的时候,把列名添加到textbox.tag
然后遍历textbox
code:
string colStr = "("
string valStr = "(";
foreach(control c in controls)
{
if(c is textbox)
{
if(colStr.length == 1)
{
colStr += c.tag.tostring();
valStr += (c as textbox).text;
}
else
{
colStr += "," + c.tag.tostring();
valStr += "," + (c as textbox).text;
}
}
}
colStr += ")";
valStr += ")";
string sqlStr = "insert into table_name" + colStr + valStr;
....
aimili4625 2010-07-19
  • 打赏
  • 举报
回复
增加一个插入按钮,在click事件中加代码:
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "server= ;username= ;pwd= ;database= ;";
conn.Open();

string str = "insert into aa values ('123','123')";
SqlCommand cmd = new SqlCommand(conn,str);

if (cmd.ExecuteNonQuery == -1)
Response.Write("添加成功");
else
Response.Write("添加失败");

conn.Close();
conn.Dispose();
zjx198934 2010-07-19
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 air123456789 的回复:]
string sql = "insert into 表(”+strName1+“,”+strName2+“) values (”+strValue1+“,”+strValue2+“)“

这样写不行。 我又不知道有几个strValue 怎么知道写到几?
[/Quote]
哎 变通一下啊 写到一个数组里面 到时候循环存取就可以了啊
air123456789 2010-07-19
  • 打赏
  • 举报
回复
string sql = "insert into 表(”+strName1+“,”+strName2+“) values (”+strValue1+“,”+strValue2+“)“

这样写不行。 我又不知道有几个strValue 怎么知道写到几?
zjx198934 2010-07-19
  • 打赏
  • 举报
回复
当你从数据库中取出列名的时候,就动态的添加一个textbox(当让要把它的ID设为字段名+一些唯一标识),那你
tring strName1 = 列名1;string strValue1= "";(用来以后放值的)
string strName2 = 列名2;string strValue2= "";
当你从页面取text的输入的值的时候就可以根据列名和你自己规定的标识取到值并放入上面对象的strValue中,
取完后就组装sql
string sql = "insert into 表(”+strName1+“,”+strName2+“) values (”+strValue1+“,”+strValue2+“)“;就可以了
air123456789 2010-07-19
  • 打赏
  • 举报
回复
插入数据也可以不需要列名的吧, 我插入的都是所有数据,

foreach (ListViewItem lv in lvTable.SelectedItems)
{
plColumnData.Controls[i*2+1].Text;
}

我知道这样可以取出我动态的 所有textbox 的值, 但是 怎么写如到这个SQL语句中去?
可以一个字段一个字段的赋值吗?
zjx198934 2010-07-19
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 air123456789 的回复:]
引用 8 楼 zjx198934 的回复:
既然是动态生成的 那你程序集一定能知道获取到有几个列 那你构建sql就可以在每添加一个textbox的时候就增加一个条件,最后将它们组装起来加上输入参数就可以了啊!


那该怎么做?
[/Quote]
当你从数据库中取出列名的时候,就动态的添加一个textbox(当让要把它的ID设为字段名+一些唯一标识),那你
tring strName1 = 列名;string strValue1= "";
string strName2 = 列名2+“=";string strValue2= "";
当你从页面取text的输入的值的时候就可以根据列名和你自己规定的标识取到值并放入上面对象的strValue中,
取完后就组装sql
string sql = "insert into 表(”+strName1+“,”+strName2+“) values (”+strValue1+“,”+strValue2+“)“;就可以了
"
miaoyu04 2010-07-19
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 air123456789 的回复:]
引用 13 楼 miaoyu04 的回复:
求楼主头像

告你。
[/Quote]

快点,发条短信息给我

------
你动态生成的textbox的id命名为“字段名_i”,这样插入的时候就可以根据id识别列名和要插入的数据
zhuhongjia1987 2010-07-19
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 air123456789 的回复:]
引用 12 楼 miaoyu04 的回复:
SQL code

--获得表的所有字段名称
select * from dbo.syscolumns
where id in (select id from dbo.sysobjects where [name] ='表名称')


这个会,但是有什么用?
[/Quote]
获得表的列名啊,有了列名不就可以插数据了
air123456789 2010-07-19
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 miaoyu04 的回复:]
求楼主头像
[/Quote]
告你。
air123456789 2010-07-19
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 miaoyu04 的回复:]
SQL code

--获得表的所有字段名称
select * from dbo.syscolumns
where id in (select id from dbo.sysobjects where [name] ='表名称')
[/Quote]

这个会,但是有什么用?
miaoyu04 2010-07-19
  • 打赏
  • 举报
回复
求楼主头像
air123456789 2010-07-19
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zhuhongjia1987 的回复:]
没看明白
[/Quote]

我表达能力没那么差吧?
miaoyu04 2010-07-19
  • 打赏
  • 举报
回复

--获得表的所有字段名称
select * from dbo.syscolumns
where id in (select id from dbo.sysobjects where [name] ='表名称')
加载更多回复(10)

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧