Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将数据集链接到SQL server:失败_C#_Sql Server_Visual Studio 2012_Web - Fatal编程技术网

C# 将数据集链接到SQL server:失败

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

我真的搜索了所有的东西,但不知何故,我的这段代码无论我尝试了什么都无法工作。 因此,我在SQL server上创建了一个数据库,并将其链接起来,对其进行了测试,效果非常好。好的,问题是当我试图在一个网站文本框中插入数据并将数据复制/传输到我的数据库表中时。所以我现在只得到一个错误,说“Exception unhandled,必须声明标量变量”@f_name”。 如果有人能帮忙,我将不胜感激?谢谢

 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);
}