繁体   English   中英

SQL Server插入

[英]SQL Server insert

我有一个简单的两字段形式,将其数据存储在数据库中。 由于某种原因,它不起作用。 我已经验证了连接字符串可以正常工作,因为它已在我创建的另一个项目中使用。

我没有包括第一堂课的开始或其页面加载。

码:

    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        string Name = txtName.Text;
        string Description = txtSpecial.Text;
        string method = string.Format(
            "INSERT INTO RbSpecials (Name,Description,Active) VALUES ('{0}','{1}','1')",
            Name,
            Description);
        RbConfiguration mySql = new RbConfiguration();
        try
        {
            mySql.Sql_Connection(method);
        }
        catch
        {

        }
    }
}

public class RbConfiguration
{
    string DbConnectionString = "System.Configuration.ConfigurationManager.ConnectionStrings['RBConnectionString'].ConnectionString";

    public void Sql_Connection(string queryString)
    {
        SqlConnection conn = new SqlConnection(DbConnectionString);
        SqlCommand cmd = new SqlCommand(queryString, conn);
        conn.Open();

        conn.Close();
    }
}

您永远不会执行 SQL命令:

conn.Open(); 
cmd.ExecuteNonQuery(); 
conn.Close(); 

并且您的连接字符串是错误的(用双引号引起来):

string DbConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["RBConnectionString"].ConnectionString;

好吧,在不知道错误的情况下,我还是会尝试一下。

string DbConnectionString = "System.Configuration.ConfigurationManager.ConnectionStrings['RBConnectionString'].ConnectionString";

应该

string DbConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["RBConnectionString"].ConnectionString;

正如亚当所说,您实际上从未执行过查询。 Sql_Connection方法仅打开一个连接,然后再次关闭它,而实际上并未执行任何操作。

尝试以下方法:

public void Sql_Connection(string queryString)
{
    using( SqlConnection conn = new SqlConnection(DbConnectionString) )
    {
        SqlCommand cmd = new SqlCommand(queryString, conn);
        conn.Open();
        cmd.ExecuteNonQuery();
    }
}
  1. 检查您的连接字符串代码一定不能是从web.config获取连接字符串的类的字符串,因此应该像这样

    字符串DbConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings [“ RBConnectionString”]。ConnectionString;

  2. 您没有执行SQlCommand,因此它将插入数据,执行此操作

    conn.Open();

    cmd.ExecuteNonQuery();

    conn.Close();

  3. 这不是原因,而是最佳实践,不要使您的代码容易受到SQLINjection的影响,请尝试本文

如何:保护ASP.NET中的SQL注入

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM