当前位置: 首页 > 编程语言 > C#

从C#代码向SQLServer插入数据

时间:2023-04-10 17:25:00 C#

从C#代码向SQLServer插入数据我有一个表student(id,name)。然后我有一个文本框,用于输入名称,单击提交按钮时,它会将数据插入数据库。那么我怎样才能只插入名称,而不插入id,因为id是自动递增的?我试过这个insertintostudent(id,name)values(,name)但它没有插入到我的表中。这是我的代码:protectedvoidButton1_Click(objectsender,EventArgse){stringtest=txtName.Text;SqlConnectionconn=newSqlConnection(@"DataSource=.SQLEXPRESS;AttachDbFilename=|DataDirectory|Person.mdf;IntegratedSecurity=True;UserInstance=True");stringsql="insertintostudent(name)values('test')";尝试{conn.Open();SqlCommandcmd=newSqlCommand(sql,conn);cmd.ExecuteNonQuery();}catch(System.Data.SqlClient.SqlExceptionex){stringmsg="InsertError:";msg+=ex.Message;}最后{conn.Close();}}INSERTINTOstudent(name)values('name')完全省略id列,它会自动填充。要使用变量,您应该参数化您的SQL查询。stringsql="INSERTINTOstudent(name)values(@name)";conn.Open();SqlCommandcmd=newSqlCommand(sql,conn);cmd.Parameters.Add("@name",SqlDbType.VarChar);cmd.Parameters["@name"].Value=测试;cmd.ExecuteNonQuery();永远不要尝试通过构建包含输入值的SQL字符串来执行此操作,因为这会使您的代码暴露于SQL注入漏洞。插入数据时最好使用参数。try{stringsql="insertintostudent(name)values(@name)";使用(SqlConnectionconn=newSqlConnection(connectionString)){conn.Open();使用(SqlCommandcmd=newSqlCommand(sql,conn)){cmd.Parameters.AddWithValue("@name",test);//给参数赋值cmd.ExecuteNonQuery();}}}catch(SqlExceptionex){stringmsg="InsertError:";味精+=前。信息;您不需要在第一部分中提及ID。insertintostudent(name)values('name')我遇到了这个问题,在尝试了在堆栈溢出时发现的各种解决方案之后,我可以这样总结我的经验:val2,val3,val4)VALUES("val1","val2",0,"val4")goorinsertintotable_nameVALUES("val1","val2",0,"val4")go直接在mssql数据库提示,但是当需要在c#中使用插入语句时,需要记住字符串需要在它们周围附加一对单字符,如:SqlConnectioncnn;stringconnetionString="DataSource=server_name;InitialCatalog=database_name;UserID=User_ID;Password=Pass_word";cnn=newSqlConnection(connectionString);SqlCommandmyCommand=newSqlCommand("insertintotable_name(val1,val2,val3,val4)VALUES('val1','val2',0,'val4');",cnn);//or//SqlCommandmyCommand=newSqlCommand(insertintotable_nameVALUES('val1','val2',0,'val4');",cnn);cnn.Open();myCommand.ExecuteNonQuery();cnn.Close();这里的问题是大多数人,像我一样,尽量使用insteadof双引号,上面实现的命令行中就是这样,SQL执行器无法理解这个意思。即使在需要替换字符串的情况下,也要确保将字符串括在单引号中,其中字符串连接看起来是一个可行的解决方案,例如:SqlCommandmyCommand=newSqlCommand("insertintotable_name(val1,val2,val3,val4)VALUES('"+val1+"','val2',0,'val4');",cnn);stringsql="INSERTINTOstudent(name)values(@name)";conn.Open();SqlCommandcmd=newSqlCommand(sql,conn);cmd.Parameters.Add("@name",SqlDbType.VarChar);cmd.Parameters["@name"].Value=测试;cmd.ExecuteNonQuery();尝试以下查询,插入学生(姓名)值(姓名)当您插入数据时,SQLServer在内部自动递增id列,因为它是自动递增的。如果它不起作用,则必须检查数据库中的标识列。带有关键字“identity”的自动递增id列引用:http://technet.microsoft.com/en-us/library/aa933196(v=sql.80).aspxcreatetabletable_name(idintPRIMARYKEYIDENTITY)和你那里无需在插入查询中提及“id”。以上就是《C#学习教程:C#代码向SQLServer插入数据》的全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家分享注意——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: