尝试连接时出错
对象引用未设置为对象的实例。
该应用程序正在我的笔记本电脑上运行SQL Server数据库,但我需要在笔记本电脑上连接应用程序并通过网络连接我的PC上的SQL Server(Sharkawy-PC
)我需要{{1}的帮助代码&每个表单的代码都可以使用app.config
中的连接。
app.config
这是我在app.config中的连接
private void btnlogin_Click(object sender, EventArgs e)
{
SqlCommand cmd;
string UserName = txtusername.Text;
var Connectionstring = ConfigurationManager.ConnectionStrings["BookingConnectionString"].ConnectionString;
SqlConnection conn = new SqlConnection(Connectionstring);
//////SqlConnection conn = new SqlConnection();
//////conn.ConnectionString = System.Configuration.ConfigurationSettings.AppSettings["BookingConnectionString"];
string strsql = "select * from UserInfo,UsersGroup where UserInfo.GroupID=UsersGroup.GroupID and UserName = '" + UserName + "' and UserPassword='" + txtusername.Text + "'";
cmd = new SqlCommand(strsql, conn);
conn.Open();
dr = cmd.ExecuteReader();
if (dr.HasRows)
{
dr.Read();
string d = dr.GetString(9).ToString();
if (d == "Admin")
{
AdminMainfrm adminmainfrm = new AdminMainfrm(txtusername.Text);
this.Hide();
adminmainfrm.ShowDialog();
}
else
{
UserMainfrm UserMainfrm = new UserMainfrm();
this.Hide();
UserMainfrm.ShowDialog();
}
}
else
{
label5.Text = "Invalid Username or password, please try again";
}
conn.Close();
}
答案 0 :(得分:1)
您需要做的一件事就是改变这一行:
var Connectionstring = ConfigurationManager.ConnectionStrings["BookingConnectionString"].ConnectionString;
为:
var Connectionstring = ConfigurationManager.ConnectionStrings["Booking.Properties.Settings.BookingConnectionString"].ConnectionString;
那应该修复对象引用错误。
接下来我要推荐的是你简化你的连接字符串,你不需要所有这些信息,只需使用这样的东西:
<add name="Booking.Properties.Settings.BookingConnectionString"
connectionString="SERVER=SHARKAWY-PC;UID=sa;PWD=123456;DATABASE=Booking"
providerName="System.Data.SqlClient" />
接下来我要推荐的是你不使用sa
帐户即使在测试期间,如果你习惯了它,你将要部署它方式。
我要推荐的最后一件事是你使用参数化查询来防止SQL注入,所以改变你的查询逻辑:
string strsql = "select * from UserInfo,UsersGroup where UserInfo.GroupID=UsersGroup.GroupID and UserName = '" + UserName + "' and UserPassword='" + txtusername.Text + "'";
cmd = new SqlCommand(strsql, conn);
conn.Open();
dr = cmd.ExecuteReader();
对此:
string strsql = "select * from UserInfo,UsersGroup where UserInfo.GroupID=UsersGroup.GroupID and UserName = @UserName and UserPassword=@UserPassword";
cmd = new SqlCommand(strsql, conn);
cmd.AddParameterWithValue("@UserName", UserName);
cmd.AddParameterWithValue("@UserPassword", txtusername.Text);
conn.Open();
dr = cmd.ExecuteReader();
答案 1 :(得分:0)
请参阅SQL Server网络配置下的 SQL Server配置管理器,您将找到协议。确保已启用TCP / IP。初始安装后,通常会禁用此功能。