[英]ASP.net error INSERTING INTO SQL table
好的,我已經到了一個不知道該怎么做的地步,我之前發布了一個問題,結果是-3的贊成票使該問題得以解決,並且由於擔心再次發生這種情況,我一直在搜尋谷歌搜索直到響起...我嘗試了很多代碼,每次我得到一個錯誤...
我今天創建了大約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行:
字符串ConnectionString = System.Configuration.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.Password
為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.Config中存儲數據庫連接字符串
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.