Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.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# 找不到表[0]_C#_Sql - Fatal编程技术网

C# 找不到表[0]

C# 找不到表[0],c#,sql,C#,Sql,我试图通过将结果填入数据库来计算会计等式;然而,我试图执行它们,但出现了错误 找不到数据表[0] 下面是一个如何填充空或0数字的示例:。我试图找出这个问题,但我仍然感到困惑 已更新 private void button1_Click(object sender, EventArgs e) { try { string ccc = CCC.Properties.Settings.Default.CCCConnecti

我试图通过将结果填入数据库来计算会计等式;然而,我试图执行它们,但出现了错误

找不到数据表[0]

下面是一个如何填充空或0数字的示例:。我试图找出这个问题,但我仍然感到困惑

已更新

        private void button1_Click(object sender, EventArgs e)
    {
        try
        {
            string ccc = CCC.Properties.Settings.Default.CCCConnectionString;

            string x = string.Empty;
            x = "Insert Into [Test$]([unitval],[balance],[avg])" 
                + "Values(@unitval,@balance,@avg)";

            using (SqlConnection c= new SqlConnection(ccc))
            {
                using (SqlCommand cmd = new SqlCommand(x,c))
                {
                    c.Open();
                    DataSet ds = new DataSet();
                    string sql = "select * From Test$";
                    SqlDataAdapter da = new SqlDataAdapter(sql, c);
                    da.Fill(ds, "Test$");
                    //DataTable dt = ds.Tables[0];

                    foreach (DataRow r in ds.Tables[0].Rows)
                    {
                        if (Convert.ToInt32(r[7]) != 0)
                        {
                            r[8] = Convert.ToInt32(r[8]) + Convert.ToInt32(r[6]);
                            cmd.Parameters.Add(new SqlParameter("@balance", r[8]));
                            r[9] = ((Convert.ToInt32(r[6]) - Convert.ToInt32(r[8]) * Convert.ToDouble(r[9])) + (Convert.ToDouble(r[7]) * Convert.ToInt32(r[6]))) / Convert.ToInt32(r[8]) + Convert.ToInt32(r[6]);
                            cmd.Parameters.Add(new SqlParameter("@avg", r[9]));
                        }
                        else
                        {
                            r[7] = r[9];
                            cmd.Parameters.Add(new SqlParameter("@unitval", r[9]));
                            r[8] = Convert.ToInt32(r[8]) - Convert.ToInt32(r[6]);
                            cmd.Parameters.Add(new SqlParameter("@balance", r[8]));
                            r[9] = r[9];
                            cmd.Parameters.Add(new SqlParameter("@avg", r[9]));
                        }

                        cmd.ExecuteNonQuery();
                        c.Close();
                        label2.Text = "Done";
                    }


                }

            }




        }
        catch (Exception f)
        {
            label2.Text = "Not Inserted" + "Error: " + f.Message;

        }



    }

在使用其中的表/行之前,您需要使用和来填充数据集。

这一行有问题

DataSet ds = new DataSet();

//DataTable dt = ds.Tables[0];
您正在创建数据集,但没有用任何数据填充数据集,所以您如何想象它将有任何行?? 尝试像这样填充数据

string cmd="select * from some_table";
SqlDataAdapter adapter = new SqlDataAdapter(cmd, c);
adapter.Fill(ds, "some_table");
更新代码

private void button1_Click(object sender, EventArgs e)
{
    try
    {
        string ccc = CCC.Properties.Settings.Default.CCCConnectionString;

        string x = string.Empty;
            x = "Insert Into Test$ (unitval,balance,avg)"
                + " Values(@uval,@balance,@avg)";

            using (SqlConnection c = new SqlConnection(ccc))
            {
                using (SqlCommand cmd = new SqlCommand(x, c))
                {
                    c.Open();
                    DataSet ds = new DataSet();
                    string sql = "select * From Test$";
                    SqlDataAdapter da = new SqlDataAdapter(sql, c);
                    da.Fill(ds, "Test$");
                    //DataTable dt = ds.Tables[0];

                    foreach (DataRow r in ds.Tables[0].Rows)
                    {
                        if (Convert.ToInt32(r[7]) != 0)
                        {
                            r[8] = Convert.ToInt32(r[8]) + Convert.ToInt32(r[6]);
                            cmd.Parameters.AddWithValue("@balance", r[8]);
                            r[9] = ((Convert.ToInt32(r[6]) - Convert.ToInt32(r[8]) * Convert.ToDouble(r[9])) + (Convert.ToDouble(r[7]) * Convert.ToInt32(r[6]))) / Convert.ToInt32(r[8]) + Convert.ToInt32(r[6]);
                            cmd.Parameters.AddWithValue("@avg", r[9]);
                        }
                        else
                        {
                            r[7] = r[9];
                            cmd.Parameters.AddWithValue("@uval", r[9]);
                            r[8] = Convert.ToInt32(r[8]) - Convert.ToInt32(r[6]);
                            cmd.Parameters.AddWithValue("@balance", r[8]);
                            r[9] = r[9];
                            cmd.Parameters.AddWithValue("@avg", r[9]);
                        }

                        cmd.ExecuteNonQuery();
                        c.Close();
                        label2.Text = "Done";
                    }


                }

            }




        }
        catch (Exception f)
        {
            label2.Text = "Not Inserted" + "Error: " + f.Message;

        }

您正在创建一个新的
DataSet
,但没有向其中添加任何表:
DataSet ds=new DataSet()您希望它从哪里获取数据?您可以创建一个没有任何配置的ew数据集。它是否神奇地拥有您想要的表?我不明白,当您编写
DataSet ds=newdataset()它生成空的
数据集
。您认为如何访问它的
?在遍历dataset中的表之前,首先使用sqldatadapter对象填充方法填充dataset中的表。感谢您的回复。我理解dataset的功能,但我收到了另一个错误“必须声明标量变量“@unitval”,感谢您的慷慨回复。然而,我以前做过,并且有一个错误,“必须声明标量变量“@unitval”。如果您将代码粘贴到这里填充dataset,将非常有帮助。请注意,SqlDataAdapter只使用sql select语句;正如我之前提到的,它以前只使用select,但它没有填充结果,所以我使用“Insert Into”语句填充结果或将结果提取到表中。错误1“int”不包含“Value”的定义,并且找不到接受类型为“int”的第一个参数的扩展方法“Value”(是否缺少using指令或程序集引用?)。很遗憾,“必须声明标量变量“@unitval”,感谢您的时间和帮助。
private void button1_Click(object sender, EventArgs e)
{
    try
    {
        string ccc = CCC.Properties.Settings.Default.CCCConnectionString;

        string x = string.Empty;
            x = "Insert Into Test$ (unitval,balance,avg)"
                + " Values(@uval,@balance,@avg)";

            using (SqlConnection c = new SqlConnection(ccc))
            {
                using (SqlCommand cmd = new SqlCommand(x, c))
                {
                    c.Open();
                    DataSet ds = new DataSet();
                    string sql = "select * From Test$";
                    SqlDataAdapter da = new SqlDataAdapter(sql, c);
                    da.Fill(ds, "Test$");
                    //DataTable dt = ds.Tables[0];

                    foreach (DataRow r in ds.Tables[0].Rows)
                    {
                        if (Convert.ToInt32(r[7]) != 0)
                        {
                            r[8] = Convert.ToInt32(r[8]) + Convert.ToInt32(r[6]);
                            cmd.Parameters.AddWithValue("@balance", r[8]);
                            r[9] = ((Convert.ToInt32(r[6]) - Convert.ToInt32(r[8]) * Convert.ToDouble(r[9])) + (Convert.ToDouble(r[7]) * Convert.ToInt32(r[6]))) / Convert.ToInt32(r[8]) + Convert.ToInt32(r[6]);
                            cmd.Parameters.AddWithValue("@avg", r[9]);
                        }
                        else
                        {
                            r[7] = r[9];
                            cmd.Parameters.AddWithValue("@uval", r[9]);
                            r[8] = Convert.ToInt32(r[8]) - Convert.ToInt32(r[6]);
                            cmd.Parameters.AddWithValue("@balance", r[8]);
                            r[9] = r[9];
                            cmd.Parameters.AddWithValue("@avg", r[9]);
                        }

                        cmd.ExecuteNonQuery();
                        c.Close();
                        label2.Text = "Done";
                    }


                }

            }




        }
        catch (Exception f)
        {
            label2.Text = "Not Inserted" + "Error: " + f.Message;

        }