我正在尝试将现有的Windows应用程序移植到Linux。
当我在Windows上使用Mono运行它时运行正常。当我在Linux机器上运行它时,我得到空引用异常。我已将其跟踪到此代码的最后一行:
DataTable dtResultRows = new DataTable();
this.Connect();
this.Connection.Open();
string query = "SELECT * FROM dbo.rp_users WHERE UserLogin = @UserLogin";
SqlCommand cmd = new SqlCommand(query, this.Connection);
cmd.Parameters.AddWithValue("@UserLogin", login);
SqlDataAdapter sda = new SqlDataAdapter (cmd);
sda.Fill (dtResultRows);
发布sda.Fill
命令以某种方式处理这个,sda
,甚至dtResultsRows
- 现在我被卡住了为什么会发生这种情况?
完整代码:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using RejestratorProdukcji.Entity;
namespace RejestratorProdukcji.Repository
{
public class UserRepository : Repository
{
public User GetUser(string login)
{
DataTable dtResultRows = new DataTable();
using (this.Connect())
{
if (this.IsConnection())
{
this.Connection.Open();
string query = "SELECT * FROM dbo.rp_users WHERE UserLogin = @UserLogin";
SqlCommand cmd = new SqlCommand(query, this.Connection);
cmd.Parameters.AddWithValue("@UserLogin", login);
SqlDataAdapter sda = new SqlDataAdapter (cmd);
sda.Fill (dtResultRows);
this.Connection.Close();
}
if (dtResultRows.Rows.Count > 0)
{
User user = new User(dtResultRows.Rows[0]["UserLogin"].ToString(), dtResultRows.Rows[0]["UserName"].ToString(),
dtResultRows.Rows[0]["UserDescription"].ToString(), (bool)dtResultRows.Rows[0]["UserActive"]);
return user;
}
else
{
throw new Exception("not exists.");
}
}
}
}
}