2010-08-30 99 views
1

我有一个简单的两字段形式,它的数据存储在数据库中。出于某种原因,它不起作用。我已经验证了连接字符串的工作原理,因为它在我创建的另一个项目中使用。SQL Server插入

我没有包含第一类或其页面加载的开始。

代码:

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(); 
    } 
} 
+0

哪里例外出现,又是什么呢? – 2010-08-30 23:03:31

+0

它实际上并没有产生错误,当我去查看表中没有插入值。来发现,连接字符串被括在引号中,我没有使用ExecuteNonQuery() – 2010-08-30 23:13:10

+0

不回答你的问题,但你的代码易受[SQL注入](http://en.wikipedia.org/wiki/ SQL_injection),这是非常危险的。谷歌它,并开始使用参数化查询。 – 2010-08-31 01:46:19

回答

2

嘛不知道错误,无论如何,我会给它一个镜头。

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

应该

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

正如亚当说,你从来没有真正执行查询。 Sql_Connection-method只打开一个连接,然后再关闭它,而没有真正做任何事情。

试试这个:

public void Sql_Connection(string queryString) 
{ 
    using(SqlConnection conn = new SqlConnection(DbConnectionString)) 
    { 
     SqlCommand cmd = new SqlCommand(queryString, conn); 
     conn.Open(); 
     cmd.ExecuteNonQuery(); 
    } 
} 
+0

ahhh是的,你是对的。另外我注意到括号中的名字需要在“”不是“中。 – 2010-08-30 23:11:07

+0

@尼克,啊在我匆忙中,我没有注意到:) – 2010-08-30 23:12:19

5

你永远不execute你的SQL命令:

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

在连接字符串是错误的(沟双引号):

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

谢谢,修复连接字符串并执行非查询后,它完美的工作! – 2010-08-30 23:11:43

+0

你应该接受这个作为答案。 :) – Mateo 2010-08-30 23:48:37

0
  1. 检查您的连接字符串代码不能是一个字符串,它的类是从web.config中获取连接字符串,所以它应该是这样的

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

  2. 你不执行你的SqlCommand,所以将它插入数据,这样做

    conn.Open();

    cmd.ExecuteNonQuery();

    conn.Close();

  3. 它不是原因,而是不要让你的代码容易受到SQL注入攻击的最佳实践,尝试本文

How To: Protect From SQL Injection in ASP.NET