gpt4 book ai didi

c# - 通过文本框将 SQL 数据插入 ASP.Net Web 应用程序中的表

转载 作者:太空宇宙 更新时间:2023-11-03 14:48:45 25 4
gpt4 key购买 nike

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.Sql;
using System.Data.SqlClient;


namespace todoassignment1
{
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Label1.Visible = false;
}

protected void btnSubmit_Click(object sender, EventArgs e)
{
string valueUser = txtUsername.Text;

SqlConnection db = new SqlConnection(SqlDataSource1.ConnectionString);

SqlCommand cmd = new SqlCommand();

cmd.CommandType = CommandType.Text;

//User is the name of the table, UserName is the column
cmd.CommandText = "INSERT User (UserName) VALUES ('" + valueUser + "')";

cmd.Connection = db;

db.Open();

try
{
cmd.Connection.Open();
cmd.ExecuteNonQuery();
Label1.Text = "Success writing into database!";
Label1.Visible = true;
}
catch (Exception ex)
{
Label1.Text = "Error writing into database.";
Console.WriteLine(ex.Message);
Label1.Visible = true;
}
finally
{
db.Close();
}
}
}
}

我在 Default.aspx 页面上添加了 SqlDataSource1,这似乎成功完成了,因为我可以在 gridview 中看到 User 表的列名。该表是空的,我要做的就是在文本框中输入内容并将其发送到 UserName 列。我不是很擅长调试,但我注意到了一些我花了几个小时研究的错误。我尝试过的事情:

  • SQL SMS > 工具 > 选项 > 设计器 > CHECK 防止保存需要重新创建表的更改
  • 使用 System.Data 添加;
  • 添加了 cmd.Connection.Open();
  • 在 catch 语句中添加了要捕获的异常
  • 重建整个数据库
  • 四重检查 txtUsername 是正确的文本框 ID
  • 一遍又一遍地重新配置 SqlDataSource1,删除并重新创建
  • 确认web.config中的connectionString是正确的
  • 使用 web.config 中的确切字符串创建新的 SQLConnection

        SqlConnection db = new SqlConnection("Data Source=NAME-PC\\SQLEXPRESS;Initial Catalog=Assignment;Integrated Security=True");
  • 将插入行从串联更改为“INSERT User (UserName) VALUES ('asdf')”以简化代码,但仍然不起作用。

  • 尝试过其他语法

        cmd.CommandText = "INSERT INTO User (UserName) VALUES (@username)";

    cmd.Parameters.Add("@username", SqlDbType.NVarChar, 50);

    cmd.Parameters["@username"].Value = txtUsername.Text.ToString();

来自调试器的线索:

  • 在 autos 中通过 cmd 挖掘时看到几个“System.InvalidCastExceptions”
  • errorCS0103:名称“ExecuteNonQuery”在当前上下文中不存在

  • 总是在运行后看到System.InvalidOperationException

请帮忙。

最佳答案

static void BtnSubmit_Click(object sender, EventArgs e)
{
string valueUser = "test"; //txtUsername.Text;
using (SqlConnection db = new SqlConnection("Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=test;Integrated Security=True"))//SqlDataSource1.ConnectionString);
{
SqlCommand cmd = new SqlCommand("INSERT INTO dbo.[User] (UserName) VALUES (@valueUser)", db);
cmd.Parameters.Add("@valueUser", SqlDbType.VarChar, 50).Value = valueUser;
//cmd.CommandType = CommandType.Text;

//User is the name of the table, UserName is the column
//cmd.CommandText = "INSERT User (UserName) VALUES (@valueUser)";

//cmd.Connection = db;

db.Open();

try
{
//cmd.Connection.Open();
cmd.ExecuteNonQuery();
/*Label1.Text =*/
Console.WriteLine("Success writing into database!");
//Label1.Visible = true;
}
catch (Exception ex)
{
/*Label1.Text =*/
Console.WriteLine("Error writing into database.");
Console.WriteLine(ex.Message);
//Label1.Visible = true;
}
//finally
//{
//db.Close();
//}
}
}

几个问题。

  1. 插入的语法是 INSERT INTO TABLE (COLUMNS) VALUES (VALUES) 你有“INSERT User (UserName)”...
  2. USER 是 SQL 中的保留字。如果您坚持将其用作表名,则必须将其括在方括号中。
  3. 您打开了两次连接。本身并不是真正的问题,但没有必要。
  4. 一直,一直,一直在使用参数。
  5. 我稍微简化了一些事情。

如果您修改我附加的方法,您应该能够复制粘贴它。

关于c# - 通过文本框将 SQL 数据插入 ASP.Net Web 应用程序中的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52865953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com