好吧,我已经到了一个不知道该怎么办的地步,我之前发布过一个问题,结果是以-3的票数结束了这个问题,由于担心再次发生这种情况,我一直在谷歌上搜索,直到崩溃。。。我试过很多代码,每次都会出错。。。
我今天已经创建了大约6/7次数据库,并不断更改连接字符串。。。
我有一个包含3个表的数据库,其中一个表名为Company
,现在我想做的是使用两个表示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();
}
}
}
}
错误:
系统。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- PCSQLEXPRESS;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。配置ConfigurationManager。ConnectionStrings["MyConnectionString"]。ConnectionString*
您的不匹配
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();
您正试图将整个密码文本框传递给它。
string sql = "INSERT INTO company (CompName, BusinessType, Pword) VALUES('" + txtCompName.Text + "','" + DropDownList1.Text + "', '" + txtPassword + "')";
如果使用密码字段,则应为txtPassword.Text
或txtPassword.Password
。
您试图加载的连接字符串似乎不存在。
你在MyConncetionString
这里有错别字吗?(也许是MyConnectionString
)
web.config
中的连接字符串被称为:
<connectionStrings>
<add name="Varsity_College.tempsConnectionString" ..... />
因此,这行代码显然不会在web.config
:中找到任何连接字符串
string ConnectionString = ConfigurationManager.ConnectionStrings["MyConncetionString"].ConnectionString;
因此,该表达式为NULL
:
ConfigurationManager.ConnectionStrings["MyConncetionString"]
尝试访问该NULL
表达式的.ConnectionString
属性会导致您看到的错误。
这些名字需要排成一行!
所以用这个来代替:
string ConnectionString = ConfigurationManager.ConnectionStrings["Varsity_College.tempsConnectionString"].ConnectionString;
然后您应该将web.config
中定义的连接字符串放入C#代码中!
此外:总是检查可能为空的东西是一个很好的原则,例如:
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;
}
正如我在评论中所说,您需要在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文件读取连接字符串
编辑:
这看起来是一个更好的链接:在Web中存储数据库连接字符串。配置