好的,我已经到了一个我不知道该怎么办的地步,我之前发过一个问题,结果是-3票投票来关闭这个问题,并担心会再次发生这种情况让我一直在搜索googleing直到抢购...我尝试了很多代码,每次都出错...
我今天创建了一个大约6/7次的数据库,并不断更改连接字符串......
我有一个包含3个表的数据库,1个表称为Company
,现在我想做的是我想使用2个表示CompName
的文本框和密码以及表示businesstype的下拉列表。
我想用这些信息输入表格,有人可以帮助我吗
这是我的代码:
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行:
string ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings [“MyConnectionString”]。ConnectionString; *
答案 0 :(得分:4)
你有不匹配
MyConncetionString =&gt;替换为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();
答案 1 :(得分:1)
您正试图将整个密码文本框传递给它。
string sql = "INSERT INTO company (CompName, BusinessType, Pword) VALUES('" + txtCompName.Text + "','" + DropDownList1.Text + "', '" + txtPassword + "')";
如果您使用的是密码字段,则应为txtPassword.Text
或txtPassword.Password
。
答案 2 :(得分:0)
您尝试加载的连接字符串似乎不存在。
你有错误MyConncetionString
吗? (也许是MyConnectionString
)
答案 3 :(得分: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;
和 然后 您应该将web.config
中定义的连接字符串添加到C#代码中!
另外:总是检查可以为null的内容是很好的原则 - 例如:
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;
}
答案 4 :(得分:0)
正如我在评论中所说,您需要在web.config中的配置标记内添加ConnectionStrings标记。
<add name="MyConnectionString" connectionString="Data Source=SQLServerNameOrIP;Initial Catalog=DatabaseName;User ID=user;password=****;Network=IDontKnow" providerName="System.Data.SqlClient"/>
某些可能(或可能不)有用的参考文献:
Sample asp.net connection string for web.config
How to: Read Connection Strings from the Web.config File
编辑:
这似乎是一个更好的链接:Storing Database Connection String in Web.Config