C# 将数据集链接到SQL server:失败
我真的搜索了所有的东西,但不知何故,我的这段代码无论我尝试了什么都无法工作。 因此,我在SQL server上创建了一个数据库,并将其链接起来,对其进行了测试,效果非常好。好的,问题是当我试图在一个网站文本框中插入数据并将数据复制/传输到我的数据库表中时。所以我现在只得到一个错误,说“Exception unhandled,必须声明标量变量”@f_name”。 如果有人能帮忙,我将不胜感激?谢谢C# 将数据集链接到SQL server:失败,c#,sql-server,visual-studio-2012,web,C#,Sql Server,Visual Studio 2012,Web,我真的搜索了所有的东西,但不知何故,我的这段代码无论我尝试了什么都无法工作。 因此,我在SQL server上创建了一个数据库,并将其链接起来,对其进行了测试,效果非常好。好的,问题是当我试图在一个网站文本框中插入数据并将数据复制/传输到我的数据库表中时。所以我现在只得到一个错误,说“Exception unhandled,必须声明标量变量”@f_name”。 如果有人能帮忙,我将不胜感激?谢谢 private void Save(string hfname, string hlname, s
private void Save(string hfname, string hlname, string hemail, string hcomment)
{
SqlConnection myConn = new SqlConnection(GetConnectionString());
String sql = "INSERT INTO helpdesk (First_Name, Last_Name, Email, Comments) VALUES " + " (@f_name, @l_name, @email, @comment)";
SqlCommand cmd = new SqlCommand(sql, myConn);
ITDBDataset itdbDataSet = new ITDBDataset();
SqlDataAdapter dataAdapter;
try
{
myConn.Open();
dataAdapter = new SqlDataAdapter(cmd);
dataAdapter.Fill(itdbDataSet);
myConn.Close();
SqlParameter[] param = new SqlParameter[6];
//para,[0]
param[0] = new SqlParameter("@f_name", System.Data.SqlDbType.VarChar, 50);
param[1] = new SqlParameter("@l_name", System.Data.SqlDbType.VarChar, 50);
param[2] = new SqlParameter("@email", System.Data.SqlDbType.VarChar, 30);
param[3] = new SqlParameter("@comment", System.Data.SqlDbType.VarChar, 600);
param[0].Value = hfname;
param[1].Value = hlname;
param[2].Value = hemail;
param[3].Value = hcomment;
cmd.CommandType = System.Data.CommandType.Text;
cmd.ExecuteNonQuery();
//SqlDataReader reader = cmd.ExecuteReader();
}
catch (System.Data.SqlClient.SqlException ex)
{
string msg = "Not Added, check context!";
msg += ex.Message;
throw new Exception(msg);
}
//finally
//{
// myConn.Close();
//}
}
对可能出现的问题有什么建议吗?您忘记了将参数添加到命令中,并且在调用该方法之前关闭了连接。我建议你使用:
private void Save(string hfname, string hlname, string hemail, string hcomment)
{
SqlConnection myConn = new SqlConnection(GetConnectionString());
String sql = "INSERT INTO helpdesk (First_Name, Last_Name, Email, Comments) VALUES " + " (@f_name, @l_name, @email, @comment)";
SqlCommand cmd = new SqlCommand(sql, myConn);
ITDBDataset itdbDataSet = new ITDBDataset();
SqlDataAdapter dataAdapter;
try
{
myConn.Open();
dataAdapter = new SqlDataAdapter(cmd);
dataAdapter.Fill(itdbDataSet);
SqlParameter[] param = new SqlParameter[6];
//para,[0]
param[0] = new SqlParameter("@f_name", System.Data.SqlDbType.VarChar, 50);
param[1] = new SqlParameter("@l_name", System.Data.SqlDbType.VarChar, 50);
param[2] = new SqlParameter("@email", System.Data.SqlDbType.VarChar, 30);
param[3] = new SqlParameter("@comment", System.Data.SqlDbType.VarChar, 600);
param[0].Value = hfname;
param[1].Value = hlname;
param[2].Value = hemail;
param[3].Value = hcomment;
cmd.Parameters.AddRange(param);//add the parameters
cmd.CommandType = System.Data.CommandType.Text;
cmd.ExecuteNonQuery();
//SqlDataReader reader = cmd.ExecuteReader();
myConn.Close();
}
我建议你用乙二醇
如果将
null
作为参数值传递,则忽略该参数,而应传递DBNull.value
。请尝试此问题中的解决方案。[SQL参数][1][1]:
SqlConnection myConn = new SqlConnection(GetConnectionString());
String sql =
"INSERT INTO helpdesk (First_Name, Last_Name, Email, Comments) VALUES " +
" (@f_name, @l_name, @email, @comment)";
SqlCommand cmd = new SqlCommand(sql, myConn);
cmd.Parameters.AddWithValue("@f_name",hfname);
cmd.Parameters.AddWithValue("@l_name",hlname);
cmd.Parameters.AddWithValue("@email",hemail);
cmd.Parameters.AddWithValue("@comment",hcomment);
ITDBDataset itdbDataSet = new ITDBDataset();
SqlDataAdapter dataAdapter;
try
{
myConn.Open();
dataAdapter = new SqlDataAdapter(cmd);
dataAdapter.Fill(itdbDataSet);
myConn.Close();
}
catch (System.Data.SqlClient.SqlException ex)
{
string msg = "Not Added, check context!";
msg += ex.Message;
throw new Exception(msg);
}