在.Net中连接一个特殊数据库(SecBase),该库已经提供ODBC接口,代码如下:string strConn = "DSN=SECWDGL;UID=SYSTEM;PWD=MANAGER";
OdbcConnection gwConn = new OdbcConnection(strConn);
string strCmd = "SELECT * FROM MA.G_DJ2004";
OdbcCommand cmd = new OdbcCommand(strCmd,gwConn);
DataSet ds = new DataSet();
OdbcDataAdapter oda = new OdbcDataAdapter(cmd);
try
{
gwConn.Open();
oda.Fill(ds,"gw");
}数据库连接Open没有问题,但是执行到Fill时出现错误:************** 异常文本 **************
System.NullReferenceException: 未将对象引用设置到对象的实例。
at System.Data.Common.Odbc32.SQLFetch(HandleRef StatementHandle)
at System.Data.Odbc.OdbcDataReader.Read()
at System.Data.Common.DbDataAdapter.FillLoadDataRow(SchemaMapping mapping)
at System.Data.Common.DbDataAdapter.FillFromReader(Object data, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
at System.Data.Common.DbDataAdapter.FillFromCommand(Object data, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable)
at NmirsDBImport.FormMain.button1_Click(Object sender, EventArgs e) in c:\documents and settings\administrator\my documents\visual studio projects\nmirsdbimport\formmain.cs:line 256
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)用WinSQL打开该库却没有任何问题,不知问题在什么地方?
OdbcConnection gwConn = new OdbcConnection(strConn);
string strCmd = "SELECT * FROM MA.G_DJ2004";
OdbcCommand cmd = new OdbcCommand(strCmd,gwConn);
DataSet ds = new DataSet();
OdbcDataAdapter oda = new OdbcDataAdapter(cmd);
try
{
gwConn.Open();
oda.Fill(ds,"gw");
}数据库连接Open没有问题,但是执行到Fill时出现错误:************** 异常文本 **************
System.NullReferenceException: 未将对象引用设置到对象的实例。
at System.Data.Common.Odbc32.SQLFetch(HandleRef StatementHandle)
at System.Data.Odbc.OdbcDataReader.Read()
at System.Data.Common.DbDataAdapter.FillLoadDataRow(SchemaMapping mapping)
at System.Data.Common.DbDataAdapter.FillFromReader(Object data, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
at System.Data.Common.DbDataAdapter.FillFromCommand(Object data, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable)
at NmirsDBImport.FormMain.button1_Click(Object sender, EventArgs e) in c:\documents and settings\administrator\my documents\visual studio projects\nmirsdbimport\formmain.cs:line 256
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)用WinSQL打开该库却没有任何问题,不知问题在什么地方?
解决方案 »
- 编了一个窗体游戏,想弄个重玩按钮,怎么让程序从头开始执行?
- DataGridView单元格的值问题
- HttpWebRequest编码问题
- 菜鸟提问:能否给出表中总数为前十个的完整代码?
- 用DataSet(比如说10行数据)填充的DataGrid,在WinForm中可编辑状态下老是多出一行?怎么不让它显出来呢?
- 关于XMLhttp抓取资料的问题,请大家帮忙,,,
- 高分:求一C#程序、三层,CS/BS都可以。。。带数据库
- Webbrowser 加载网页显示脱机,而浏览器能打开
- 在线等,急!!!C#,WinForm窗体程序、如何实现像QQ一样的热键?
- c#里面如何实现类的clone的功能
- 关于DataGrid导出excel的问题,高手指点一下
- 使用API问题,GetWindowTextA这个API怎么不能用,我在别的开发语言里能用,怎么会事?
是你的程序错了,运用了还没有实例化的变量
OdbcConnection gwConn = new OdbcConnection(strConn);
gwConn.Open();
string strCmd = "UPDATE MA.G_DJ2004 SET XH=1 ";
OdbcCommand cmd = new OdbcCommand(strCmd,gwConn);
cmd.ExecuteNonQuery();但如果Select就会出错,Read也不行:string strConn = "DSN=SECWDGL;UID=SYSTEM;PWD=MANAGER";
OdbcConnection gwConn = new OdbcConnection(strConn);
gwConn.Open();
string strCmd = "SELECT * FROM MA.G_DJ2004 WHERE XH=1";
OdbcCommand cmd = new OdbcCommand(strCmd,gwConn);
OdbcDataReader reader = cmd.ExecuteReader();
while(reader.Read()){string strTmp= reader.ToString();}
gwConn.Close();
while(reader.Read()){string strTmp= reader.ToString();}
改成
while(reader.Read()){string strTmp= reader.ToString(0);}
试试。程序开头加
using Systerm.Data;
using Systerm.Data.Odbc;
试一下
啥意思?