我正在尝试使用查询字符串输入数据。我的代码是
protected void Page_Load(object sender, EventArgs e)
{
// insertData();
if (!String.IsNullOrWhiteSpace(Request.QueryString["SChn"]))
{
if (!String.IsNullOrWhiteSpace(Request.QueryString["PAN"]))
{
if (!String.IsNullOrWhiteSpace(Request.QueryString["STag"]))
{
if (!String.IsNullOrWhiteSpace(Request.QueryString["MAC"]))
{
insertData1();
}
}
}
}
}
// else
// {
// Response.Redirect("http://localhost:53627/Default.aspx");
// }
public void insertData1()
{
using (SqlConnection con = new SqlConnection(GetConnectionString()))
{
con.Open();
try
{
using (SqlCommand cmd = new SqlCommand("INSERT INTO SensorConfig(SChn, PAN, STag, MAC) VALUES(@SChn, @PAN, @STag, @MAC)", con))
{
cmd.Parameters.Add(new SqlParameter("SChn", Request.QueryString["SChn"].Trim()));
cmd.Parameters.Add(new SqlParameter("PAN", Request.QueryString["PAN"].Trim()));
cmd.Parameters.Add(new SqlParameter("STag", Request.QueryString["STag"].Trim()));
cmd.Parameters.Add(new SqlParameter("MAC", Request.QueryString["MAC"].Trim()));
cmd.ExecuteNonQuery();
}
}
catch (Exception Ex)
{
// Console.WriteLine("Unable To Save Data. Error - " + Ex.Message);
Response.Write("Unable To Save Data. Error - " + Ex.Message);
}
}
}
public string GetConnectionString()
{
//sets the connection string from the web config file "ConnString" is the name of the Connection String
return System.Configuration.ConfigurationManager.ConnectionStrings["MyConsString"].ConnectionString;
}
protected void Button1_Click(object sender, EventArgs e)
{
insertData1();
}
我根据建议进行了一些更改,但错误已更改为
Error - Object reference not set to an instance of an object.
我试过但没有得到任何线索。
答案 0 :(得分:3)
您使用了错误的sql参数名称
cmd.Parameters.Add(new SqlParameter("@SChn", Request.QueryString["SChn"]));
cmd.Parameters.Add(new SqlParameter("@PAN", Request.QueryString["PAN"]));
cmd.Parameters.Add(new SqlParameter("@STag", Request.QueryString["STag"]));
cmd.Parameters.Add(new SqlParameter("@MAC", Request.QueryString["MAC"]));
您需要指定与sql查询完全相同的名称
修改强>
之前添加此项,如果您传递正常的空值或空值,则会收到错误,因此您需要传递DBNull.Value
而不是
if(string.IsNullOrWhitespace(Request.QueryString["SChn"]))
{
cmd.Parameters.Add(new SqlParameter("@SChn", DBNull.Value);
}
else
{
cmd.Parameters.Add(new SqlParameter("@SChn", Request.QueryString["SChn"]));
}
<强> EDIT2 强>
如果您的列为not null
列,则将代码更改为:
if (!String.IsNullOrWhitespace(Request.QueryString["SChn"]))
{
if (!String.IsNullOrWhitespace(Request.QueryString["PAN"]))
{
if (!String.IsNullOrWhitespace(Request.QueryString["Stag"]))
{
if (!String.IsNullOrWhitespace(Request.QueryString["MAC"]))
{
insertData();
}
}
}
}
因为您只想在不是null
而非空
答案 1 :(得分:2)
更改此代码部分。您应该指定参数名称,而不是列名。
cmd.Parameters.Add(new SqlParameter("@SChn", Request.QueryString["SChn"]));
cmd.Parameters.Add(new SqlParameter("@PAN", Request.QueryString["PAN"]));
cmd.Parameters.Add(new SqlParameter("@STag", Request.QueryString["STag"]));
cmd.Parameters.Add(new SqlParameter("@MAC", Request.QueryString["MAC"]));
修改强>
某些值可以为空字符串。您也应该更改此代码
if (!String.IsNullOrEmpty(Request.QueryString["SChn"]))
{
if (!String.IsNullOrEmpty(Request.QueryString["PAN"]))
{
if (!String.IsNullOrEmpty(Request.QueryString["Stag"]))
{
if (!String.IsNullOrEmpty(Request.QueryString["MAC"]))
{
insertData();
}
}
}
}
有关此内容的更多信息
答案 2 :(得分:1)
问题:您应该提供SQL Command Parameters
语句
INSERT INTO
您已将使用过的insert插入如下:
"INSERT INTO SensorConfig(Sensor_Channel, PAN_ID, SENSOR_TAG, MAC_Address) VALUES(@SChn, @PAN, @STag, @MAC)"
所以你应该提供如下:
cmd.Parameters.Add(new SqlParameter("@SChn", Request.QueryString["SChn"]));
cmd.Parameters.Add(new SqlParameter("@PAN", Request.QueryString["PAN"]));
cmd.Parameters.Add(new SqlParameter("@STag", Request.QueryString["STag"]));
cmd.Parameters.Add(new SqlParameter("@MAC", Request.QueryString["MAC"]));
cmd.ExecuteNonQuery();
解决方案2:我认为您的第三个查询字符串为Request.QueryString["Stag"]
小而不是资本S检查一次
解决方案3:如果条件如下更改
if ((Request.QueryString["SChn"] != null) && (!(Request.QueryString["SChn"].Trim().Equals(""))))
{
if ((Request.QueryString["PAN"] != null) && (!(Request.QueryString["PAN"].Trim().Equals(""))))
{
if ((Request.QueryString["STag"] != null) && (!(Request.QueryString["STag"].Trim().Equals(""))))
{
if ((Request.QueryString["MAC"] != null) && (!(Request.QueryString["MAC"].Trim().Equals(""))))
{
insertData();
}
}
}
}
插入数据时使用Trim
cmd.Parameters.Add(new SqlParameter("@SChn", Request.QueryString["SChn"].Trim()));
cmd.Parameters.Add(new SqlParameter("@PAN", Request.QueryString["PAN"].Trim()));
cmd.Parameters.Add(new SqlParameter("@STag", Request.QueryString["STag"].Trim()));
cmd.Parameters.Add(new SqlParameter("@MAC", Request.QueryString["MAC"].Trim()));