C# 选择第一个表数据并将其传递给int value,然后在第二个表中打印它?错误

C# 选择第一个表数据并将其传递给int value,然后在第二个表中打印它?错误,c#,asp.net,sql,C#,Asp.net,Sql,我想从一个表中选择id,然后将该id插入到另一个表中。 首先,我需要读取我的第一个表id并将其传递给string。 然后我需要将该字符串传递给第二个表 String selQuery = "SELECT Id FROM MapDataImage WHERE Source='" + TextBox1.Text + "';"; { int MId = int.TryParse(Id); String QueryStr = "INSERT INTO User_Images VALUES

我想从一个表中选择
id
,然后将该
id
插入到另一个表中。 首先,我需要读取我的第一个表id并将其传递给string。 然后我需要将该字符串传递给第二个表

String selQuery = "SELECT Id FROM MapDataImage WHERE Source='" + TextBox1.Text + "';";
{
    int MId = int.TryParse(Id);
    String QueryStr = "INSERT INTO User_Images VALUES (@Image)";
    SqlCommand scmd = new SqlCommand(QueryStr, conn);
    SqlDataReader sqldread = scmd.ExecuteReader();

    //String QueryStr = "UPDATE MapDataImage SET Image = @Image WHERE Source='" + TextBox1.Text + "';";
    //SqlCommand scmd = new SqlCommand(QueryStr, conn);
    scmd.Parameters.Add("@Image", SqlDbType.VarBinary).Value = imgbytes;
    scmd.ExecuteNonQuery();
}
那么这是正确的吗

int MId = int.TryParse(Id); //the name id does not exist in current context?
但我想从数据库中检索特定的id值

这是行不通的<代码>“Id”是字符串文字,它永远不能是整数。我认为您需要指定一个变量

int mId = int.Parse(id);
除此之外,尝试使用
TryParse
,这样更安全

还可以在
SELECT
语句上使用
参数化查询
,以防止
SQL注入


请张贴您的代码的其余部分,我会调整我的答案,以适应

您不能自己创建DataReaders对象。相反,您可以通过调用Command类的ExecuteReader方法来获取对DataReader对象的引用


Tryparse
返回一个布尔值,而不是整数。
int MId = int.Parse("Id");
int mId = int.Parse(id);