在 C# 程序中使用 SQL Server insert 语句
本文关键字:SQL Server insert 语句 程序 | 更新日期: 2023-09-27 17:55:32
大家好,我试图将从前端获得的值插入到 SQL Server 数据库。这是我的代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Geocoding.Google;
using Geocoding;
using System.Data.SqlClient;
public partial class regforswa : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
string lat;
string longi;
IGeocoder geocoder = new GoogleGeocoder() { };
Address[] addresses =
geocoder.Geocode(TextBox4.Text+TextBox5.Text+TextBox6.Text).ToArray();
foreach (Address adrs in addresses)
{
//Response.Write("lat=" +adrs.Coordinates.Latitude.ToString());
//Response.Write( "longi="+ adrs.Coordinates.Longitude.ToString());
}
SqlConnection conn = new SqlConnection("Data Source=ADMIN-PC''SQLEXPRESS;Initial Catalog=swa1;User Id=swa1;Password=swa1;");//datasource=localhost name,initial catalog=db name
//integrated security=windiws authentication OR for sql authentication specify
//userid and password
conn.Open();//opens connection with the database
try
{//exeption handling
String uname=TextBox1.Text;
String pwd=TextBox3.Text;
String mnumber = TextBox7.Text;
String sques = DropDownList1.Text;
String res = TextBox8.Text;
String adress = TextBox4.Text;
String cty = TextBox5.Text;
String zpcode = TextBox6.Text;
// Response.Write("uname"+uname +"pwd"+ pwd);
SqlCommand newcomm = new SqlCommand("INSERT INTO regforswa(username,password,mno,sq,response,address,city,zipcode) VALUES (uname,pwd,mnumber,sques,res,adress,cty,zpcode)", conn);
if (newcomm.ExecuteNonQuery() == 1)
{
result.Visible = true;
result.Text = "entered successfully";
}
else
{
result.Text = "not entered";
}
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
finally
{
conn.Close();
}
}
}
但是我收到此错误
列名"uname"无效。列名"pwd"无效。无效列 名称"mnumber"。列名称"sques"无效。列名无效 "res"。列名称"地址"无效。列名"cty"无效。 列名"zpcode"无效。
我检查了我的数据库列名称,它是完美的。 请有人帮忙。为什么我会收到此错误?
在 INSERT 命令中,您不能以这种方式直接传递变量值。使用参数占位符,然后生成命令的参数集合
string uname=TextBox1.Text;
string pwd=TextBox3.Text;
string mnumber = TextBox7.Text;
string sques = DropDownList1.Text;
string res = TextBox8.Text;
string adress = TextBox4.Text;
string cty = TextBox5.Text;
string zpcode = TextBox6.Text;
SqlCommand newcomm = new SqlCommand(@"INSERT INTO regforswa
(username,password,mno,sq,response,address,city,zipcode) VALUES
(@uname,@pwd,@mnumber,@sques,@res,@adress,@cty,@zpcode)", conn);
newcomm.Parameters.AddWithValue("@uname", uname);
..... and so on for the other parmaters required by the placeholders
if (newcomm.ExecuteNonQuery() == 1)
此外,请记住,参数应完全按照字段的要求键入。例如,如果字段 mno 是整数类型,则需要转换该参数的值
newcomm.Parameters.AddWithValue("@mnumber", Convert.ToInt32(mnumber));