C# ASP.net:插入语句和gridview

C# ASP.net:插入语句和gridview,c#,asp.net,gridview,code-behind,sql-insert,C#,Asp.net,Gridview,Code Behind,Sql Insert,我有一个错误,我无法理解我犯了什么错误。在讨论问题之前,让我告诉你:我有四张桌子 Tbl1 +----+----------+-----------+----------+ | ID | NAME | ADDRESS | SALARY | +----+----------+-----------+----------+ | C1 | Ramesh | Ahmedabad | 2000.00 | | C2 | Khilan | Delhi | 1500.00 |

我有一个错误,我无法理解我犯了什么错误。在讨论问题之前,让我告诉你:我有四张桌子

Tbl1
+----+----------+-----------+----------+
| ID | NAME     | ADDRESS   | SALARY   |
+----+----------+-----------+----------+
| C1 | Ramesh   | Ahmedabad |  2000.00 |
| C2 | Khilan   | Delhi     |  1500.00 |
| C3 | kaushik  | Kota      |  2000.00 |
| C4 | Chaitali | Mumbai    |  6500.00 |
| C5 | Hardik   | Bhopal    |  8500.00 |
| C6 | Komal    | MP        |  4500.00 |
| C7 | Muffy    | Indore    | 10000.00 |
+----+----------+-----------+----------+

Tbl2
+----+----------+-----------+
| ID | NAME     | ADDRESS   |   
+----+----------+-----------+
| S1 | Roy      | Kolkota   |
| S2 | Praveen  | Delhi     |
| S3 | Madhuri  | Kota      |
| S4 | Hema     | Mumbai    |
| S5 | Anu      | Mumbai    |
| S6 | Khushi   | MP        |
| S7 | Anjali   | Indore    |
+----+----------+-----------+

Tbl3
+----+----------+-----------+
| ID | NAME     | ADDRESS   |   
+----+----------+-----------+
| P1 | Mouse    | Delhi     |
| P2 | Camera   | Delhi     |
| P3 | Pen Drive| Ahmedabad |
| P4 | RAM’s    | Mumbai    |
| P5 | Keyboard | Mumbai    |
| P6 | HDMI’s   | MP        |
| P7 | Hard Disk| Indore    |
+----+----------+-----------+   

Tbl4
+----+-------+-----------+-----------+
| ID | ID    | ID        | Total Cost|
+----+-------+-----------+-----------+
| C1 | S1    | P1        |    2000   |
| C1 | S1    | P3        |    1500   |
| C2 | S2    | P4        |    1200   |
| C2 | S3    | P2        |    1800   |
| C4 | S5    | P1        |    1000   |
| C5 | S6    | P5        |    900    |
| C6 | S7    | P6        |    190    |
| C7 | S6    | P4        |    1900   |
+----+-------+-----------+-----------+
问题1:我试图在tbl2中插入一个新行,但出现了一个错误,即列名称不存在

例如,我添加了S8 Rakesh Banglore(这在三个不同的文本框下)。它说列名S8,列名Rakesh,列名Banglore不存在。下面是我的代码。另外,我应该添加什么来提供重复数据的消息?另外,如果我添加了S11或其他内容,那么我应该如何安排表格

web.config

<?xml version="1.0"?>

<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->

<configuration>
<appSettings>

    <add key="SQLConn" value="Data Source=online database source;Initial Catalog=database name;Persist Security Info=True;User ID=username;Password=password" />
</appSettings>
    </configuration>
我在上面的“SqlConn.Open();”行中遇到了一个错误

问题2:

如果我有一个web表单,它有两个文本框名称txt_CID.txt和txt_SID.txt。它在网格视图中显示tbl3行。我不知道如何打印这个代码。我还想学习如何在没有代码隐藏的情况下打印它

例如:

所以,如果我输入c1s1,结果应该是

| P1 | Mouse    | Delhi     |
| P3 | Pen Drive| Ahmedabad |

这将在网格视图中显示结果

问题1解决方案:

您打开了SqlConn.open();它两次出错

删除其中一条语句

并删除代码中的以下行

    cmd.Parameters.AddWithValue("@id", txt_id.Text);
    cmd.Parameters.AddWithValue("@name", txt_name.Text);
    cmd.Parameters.AddWithValue("@address", txt_address.Text);
最后,

您遗漏了地址(txtaddress.Text)代码的单引号

        SqlConnection SqlConn = new SqlConnection();
        SqlCommand cmd;
        SqlConn.ConnectionString = ConfigurationManager.AppSettings["SqlConn"].ToString();
        SqlConn.Open();
        string query1 = "insert into tbl2(id,name,address) values (" + txt_id.Text + ",'" + txt_name.Text + "','" + txt_address.Text + "')";
        cmd = new SqlCommand(query1, SqlConn);
        cmd.ExecuteNonQuery();
        SqlConn.Close();

问题1:

将查询更改为类似以下内容

protected void Button1_Click1(object sender, EventArgs e)
{
    SqlConnection SqlConn = new SqlConnection();
    SqlCommand cmd;
    SqlConn.ConnectionString = ConfigurationManager.AppSettings["SqlConn"].ToString();
    SqlConn.Open();
    string query1 = "insert into tbl2(id,name,address) values (@id,@name,@address)";
    cmd = new SqlCommand(query1, SqlConn);
    cmd.Parameters.AddWithValue("@id", txt_id.Text);
    cmd.Parameters.AddWithValue("@name", txt_name.Text);
    cmd.Parameters.AddWithValue("@address", txt_address.Text);
    cmd.ExecuteNonQuery();
    SqlConn.Close();
}

问题1:

不太确定,但我认为在向查询中添加TXTDAddress和txt_id时缺少单引号

你的问题

string query1 = "insert into tbl2(id,name,address) values (" + txt_id.Text + ",'" + txt_name.Text + "'," + txt_address.Text + ")";
应改为

string query1 = "insert into tbl2(id,name,address) values ('" + txt_id.Text + "','" + txt_name.Text + "','" + txt_address.Text + "')";
同时删除
cmd.Parameters.AddWithValue

问题2:

我认为您只需要加入Tbl3和Tbl4,这样查询将如下所示

我还假设Tbl4中的3个ID是ID_1、ID_2和ID_3

我没有测试它,所以可能有一些语法错误

"SELECT T3.ID, T3.NAME, T3.ADDRESS
FROM TBL3 T3
INNER JOIN TBL4 T4
ON T3.ID = T4.ID_3
WHERE T4.ID_1 = '" +  txt_CID.txt + "' AND T4.ID_2 = '" + txtSID.txt + "'";
向gridview显示数据的代码

DataSet objDataSet = new DataSet(); SqlConnection objConn = new SqlConnection(); string query = "";//Your query here SqlCommand objComm = new SqlCommand(query, objConn); SqlDataAdapter objDataAdapter = new SqlDataAdapter(objComm); if (objConn.State == ConnectionState.Closed) { objConn.Open(); } objDataAdapter.Fill(objDataSet, "YourTableName"); dataGridView1.DataSource = objDataSet; 数据集objDataSet=新数据集(); SqlConnection objConn=newsqlconnection(); 字符串查询=”//你的问题在这里 SqlCommand objComm=新的SqlCommand(查询,objConn); SqlDataAdapter objDataAdapter=新的SqlDataAdapter(objComm); if(objConn.State==ConnectionState.Closed) { objConn.Open(); } Fill(objDataSet,“YourTableName”); dataGridView1.DataSource=objDataSet;
希望这能有所帮助

在收到您的建议后,我确实删除了我的“SqlConn.Open();”,但它仍然给了我这个错误。此外,我还更新了与“SqlConn.Open()”相关的帖子,“当然我会在迷你版中上传它,但要从所有文本框中获取值,它应该是‘string query1=“insert into tbl2(id,name,address)value”(“+txt_id.text+”、“+txt_name.text+”、“+txt_address.text+”);”不,恐怕你错了。您已将“txt_id”的值分配给“@id”并将“txt_name”的值分配给“@name”等..System.Data.SqlClient.SqlException”类型的异常发生在System.Data.dll中,但未在用户代码中处理。其他信息:必须声明标量变量“@id”。有关详细说明,请参阅上述代码。添加了完整的代码。现在它可以解决问题1。现在我专注于问题2。谢谢你,我会尝试让你知道。做我的问题2,但我有一个问题,我如何连接到网格视图以显示结果?检查我关于在网格视图中显示结果的更新答案。至于您的错误,我认为您在查询中缺少了单引号,您在查询中添加了txt_id.txt。您需要在添加txt_id和TXTDAddress的地方加上单引号。请注意my answer.string query=“从T3.ID=T4.ID_3上的TBL3 T3内部连接TBL4 T4中选择T3.ID、T3.NAME、T3.ADDRESS,其中T4.ID_1=”“+txt_CID.txt+””和T4.ID_2=”+txtSID.txt+“”;对吗?是的,这应该是获取gridview记录的查询。我已删除了“AddWithValue”并更新了您在我的程序中建议的内容。现在错误是-System.Data.SqlClient.SqlException类型的异常出现在System.Data.dll中,但未在用户代码中处理。其他信息:无效列名“S8”。 DataSet objDataSet = new DataSet(); SqlConnection objConn = new SqlConnection(); string query = "";//Your query here SqlCommand objComm = new SqlCommand(query, objConn); SqlDataAdapter objDataAdapter = new SqlDataAdapter(objComm); if (objConn.State == ConnectionState.Closed) { objConn.Open(); } objDataAdapter.Fill(objDataSet, "YourTableName"); dataGridView1.DataSource = objDataSet;