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;