如何插入带有“的行”;“自动编号”;字段(ID列)进入Access数据库/C#ASP.NET
这是我第一次与DB合作。 我决定创建一个包含两个表的DB——“团队”、“玩家” 我想在“玩家”表中添加一个新玩家。 “Player”表由以下列组成:ID(自动编号)、FirstName、LastName、TeamID 为此,我为FirstName、LastName和TeamID创建了三个文本框 请注意,我没有处理“ID”,因为它是一个自动编号,应该自动添加 单击按钮1\u将最终添加新行 这是我的密码:如何插入带有“的行”;“自动编号”;字段(ID列)进入Access数据库/C#ASP.NET,asp.net,database,Asp.net,Database,这是我第一次与DB合作。 我决定创建一个包含两个表的DB——“团队”、“玩家” 我想在“玩家”表中添加一个新玩家。 “Player”表由以下列组成:ID(自动编号)、FirstName、LastName、TeamID 为此,我为FirstName、LastName和TeamID创建了三个文本框 请注意,我没有处理“ID”,因为它是一个自动编号,应该自动添加 单击按钮1\u将最终添加新行 这是我的密码: protected void Button1_Click(object sender,
protected void Button1_Click(object sender, EventArgs e)
{
try
{
connection = new OleDbConnection(connectionString);
}
catch
{ }
try
{
connection.Open();
OleDbCommand command = new OleDbCommand("INSERT INTO Player VALUES ('" + TextBox1.Text + "','" + TextBox2.Text + "','" + TextBox3.Text + "')");
command.ExecuteNonQuery();
connection.Close();
}
catch
{ }
如果TeamID是一个数字,则不需要在其周围加引号
OleDbCommand command = new OleDbCommand("INSERT INTO Player VALUES ('" + TbFirstName.Text + "','" + TbLastName.Text + "'," + TbTeamID.Text + ")");
注意:我重命名了文本框以减少歧义
虽然这可能是您的第一次尝试,但您应该真正清理您的输入。至少创建一个函数,用双单引号替换单引号
protected string SanitizeSQL(string txt) {
return txt.replace("'", "''");
}
OleDbCommand command = new OleDbCommand("INSERT INTO Player VALUES ('" + SanitizeSQL(TbFirstName.Text) + "','" + SanitizeSQL(TbLastName.Text) + "'," + SanitizeSQL(TbTeamID.Text) + ")");
编写不包含列名的插入字符串时,应指定值中的每一列。在您的情况下,您需要添加
string sqlText = "INSERT INTO Player (FirstName, LastName, TeamID) VALUES ('"
+ TextBox1.Text + "','" + TextBox2.Text + "','" + TextBox3.Text + "')");
然而,由于另一个原因,该代码是错误的。切勿编写连接用户键入的输入文本的sql字符串。这将导致错误,或者更糟的是,导致
还有一个问题。如果TeamID字段是数值字段,则需要将textbox3.text输入转换为数值,以正确使用AddWithValue方法
int teamID;
if(!Int32.TryParse(textBox3.Text, out teamID))
throw new ArgumentException("Type a valid TeamID number, please!");
command.Parameters.AddWithValue("@team", teamID);
insert命令应指定要更新的列,因此应为:
INSERT INTO Player(FirstName,LastName,TeamID) VALUES ('" + TextBox1.Text + "','" + TextBox2.Text + "','" + TextBox3.Text + "')"
还请注意,将用户输入的文本直接连接到查询中会导致sql注入攻击。注意,我没有处理“ID”,因为它是一个自动编号,应该自动添加。您似乎在告诉我们答案。问题是什么?当问问题时,你应该明确指出你在适用的错误消息方面遇到了什么问题(如果合适)。关于这个问题的答案似乎有一系列很好的猜测,但你不应该让人们去猜测。空的捕鼠器是邪恶的。他们阻止你告诉我们你的问题是什么,在哪里。顺便说一句:如果TeamID列是一个数字,TextBox3。文本不应该在单引号内。在参数化版本上做得很好。我懒得去确认正确的语法你不需要在字段名周围加括号吗?非常感谢大家,我确实添加了一个问题,但不知怎么的,它消失了(我是这里的noob)
INSERT INTO Player(FirstName,LastName,TeamID) VALUES ('" + TextBox1.Text + "','" + TextBox2.Text + "','" + TextBox3.Text + "')"