我试图将数据库从MySQL更改为针对此VS2010 C#项目的SQL Server 2008 express。但是,当我更改连接字符串和查询后,程序会在“cmr.close()”上产生错误“空引用异常未处理”。下面是代码和发生错误的地方:将字符数组与数据库记录进行比较并读取记录
namespace JawiRdrSQL
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
SqlConnection sc = new SqlConnection("Data Source=USER-PC\\SQLEXPRESS;Initial Catalog=firstDB;Integrated Security=True");
SqlCommand cmd;
SqlDataReader cmr;
public MainWindow()
{
InitializeComponent();
}
//string sc;
string strValue;
private void button1_Click(object sender, RoutedEventArgs e)
{
strValue = textBox1.Text;
char[] strVal = strValue.ToCharArray();
Array.Reverse(strVal);
foreach(char obj in strVal)
{
try
{
sc.Open();
cmd = new SqlCommand ("select JawiReader (stringR)" + ((char)obj), sc);
cmd.ExecuteNonQuery();
if (cmr.Read())
{
label1.Content += cmr["stringJ"].ToString();
}
else
{
MessageBox.Show("tidak sah");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
cmr.Close(); // error occurs here
sc.Close();
}
}
我试图产生收到字符串将被分解成焦炭然后与数据库中值的程序。之后,程序将从数据库中输出一串值。
的[可能重复什么是一个NullReferenceException,如何解决? ](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it) – dotctor
if(cmr!= null)cmr.Close();不需要打开和关闭每个命令的连接。将连接“sc”在foreach循环之外打开/关闭。 – jdweng