0

好吧,我已经到了不知道该怎么做的地步了,我之前发布过一个问题,结果是-3 投票结束了这个问题,并且害怕再次发生这种情况让我一直在寻找谷歌搜索直到被抢购......我尝试了很多代码,每次我得到一个错误......

我今天创建了大约 6/7 次数据库并不断更改连接字符串...

我有一个包含 3 个表的数据库,1 个表被调用Company,现在我想做的是我想使用 2 个代表CompName密码的文本框和一个代表业务类型的下拉列表。

我想用这些在表格中输入信息,有人可以帮我吗

这是我的代码:

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


public partial class CompanyLogin : System.Web.UI.Page
{
    protected void Button1_Click(object sender, EventArgs e)
    {
        string ConnectionString =     System.Configuration.ConfigurationManager.ConnectionStrings["MyConncetionString"].ConnectionString;

        string sql = "INSERT INTO company (CompName, BusinessType, Pword) VALUES('" + txtCompName.Text + "','" + DropDownList1.Text + "', '" + txtPassword + "')";
        using (SqlConnection sqlconn = new SqlConnection(ConnectionString))
        {
            sqlconn.Open();

            using (SqlCommand command = new SqlCommand(sql, sqlconn))
            {
                command.ExecuteNonQuery();
            }
        }
    }
}

错误:

System.NullReferenceException:对象引用未设置为对象的实例。

在线的:

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

web.config

<?xml version="1.0"?>
<configuration>
  <connectionStrings>
     <add name="Varsity_College.tempsConnectionString" 
          connectionString="Data Source=JAUN-   PC\SQLEXPRESS;Initial Catalog=Varsity_College.temps;Integrated Security=True"
          providerName="System.Data.SqlClient" />
  </connectionStrings>
  <system.web>
       ...... (irrelevant) ......
  </system.web>
  <system.webServer>
     <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
</configuration>

我的错误一直指向

第 17 行:
字符串 ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString; *

4

5 回答 5

4

你有不匹配

MyConncetionString => 替换为MyConnectionString

您可以使用

   cmd.CommandText =  "insert into company(CompName, BusinessType, Pword) Values(@CompName,@BusinessType,@Pword);"

    cmd.Parameters.AddWithValue("@CompName", txtCompName.Text);    
    cmd.Parameters.AddWithValue("@BusinessType",DropDownList1.Text);    
    cmd.Parameters.AddWithValue("@Pword",txtPassword );    

    cmd.ExecuteNonQuery();
于 2012-10-11T19:35:35.560 回答
1

您正在尝试将整个密码文本框传递给它。

string sql = "INSERT INTO company (CompName, BusinessType, Pword) VALUES('" +    txtCompName.Text + "','" + DropDownList1.Text + "', '" + txtPassword + "')";

应该是txtPassword.Text或者txtPassword.Password如果您使用的是密码字段。

于 2012-10-11T19:36:36.197 回答
0

您的连接字符串web.config称为:

<connectionStrings>
   <add name="Varsity_College.tempsConnectionString"  ..... />

那么这行代码显然不会在以下位置找到任何连接字符串web.config

string ConnectionString = ConfigurationManager.ConnectionStrings["MyConncetionString"].ConnectionString;

因此,这个表达式是NULL

ConfigurationManager.ConnectionStrings["MyConncetionString"]

并尝试访问该表达式的.ConnectionString属性NULL会导致您看到的错误。

这些名字需要排队!

所以改用这个:

string ConnectionString = ConfigurationManager.ConnectionStrings["Varsity_College.tempsConnectionString"].ConnectionString;

然后您应该将在您的 C# 代码中定义的连接字符串web.config

另外:总是检查可以为空的东西是一个很好的原则- 例如:

string ConnectionString = string.Empty;

// get the entry from the config file
var entry = ConfigurationManager.ConnectionStrings["MyConncetionString"];

// **CHECK** if entry is NOT NULL ......
if (entry != null)
{
   // only when sure that it's not NULL - **THEN** access the entry....
   ConnectionString = entry.ConnectionString;
}
于 2012-10-11T19:47:49.593 回答
0

正如我在评论中所说,您需要在 web.config 的配置标签中添加 ConnectionStrings 标签。

<add name="MyConnectionString" connectionString="Data Source=SQLServerNameOrIP;Initial Catalog=DatabaseName;User ID=user;password=****;Network=IDontKnow" providerName="System.Data.SqlClient"/>

一些可能(或可能没有)有用的参考: web.config 的示例 asp.net 连接字符串
如何:从 Web.config 文件中读取连接字符串

编辑:
这看起来像一个更好的链接:Storing Database Connection String in Web.Config

于 2012-10-11T19:49:14.197 回答
0

您尝试加载的连接字符串似乎不存在。

你这里有错字MyConncetionString吗?(也许是MyConnectionString

于 2012-10-11T19:35:46.303 回答