从Sybase ASE 15执行存储过程,并使用C#获取数据集?
如何从Sybase ASE 15(使用ODBC)执行存储过程并使用C#获取数据集从Sybase ASE 15执行存储过程,并使用C#获取数据集?,c#,sql,stored-procedures,sap-ase,C#,Sql,Stored Procedures,Sap Ase,如何从Sybase ASE 15(使用ODBC)执行存储过程并使用C#获取数据集 公共静态对象GetDataSetOdbc(字符串连接,字符串查询) { OdbcConnection ConexaoOdbc=新的OdbcConnection(conn); ConexaoOdbc.ConnectionTimeout=120; OdbcDataAdapter daOdbc; OdbcCommand-cmdOdbc; 数据集dsResultado=新数据集(); bool exc=假; 尝试 { 如
公共静态对象GetDataSetOdbc(字符串连接,字符串查询)
{
OdbcConnection ConexaoOdbc=新的OdbcConnection(conn);
ConexaoOdbc.ConnectionTimeout=120;
OdbcDataAdapter daOdbc;
OdbcCommand-cmdOdbc;
数据集dsResultado=新数据集();
bool exc=假;
尝试
{
如果(查询!=“”)
{
cmdOdbc=新的odbc命令(query,ConexaoOdbc);
cmdOdbc.CommandType=CommandType.Text;
daOdbc=新的OdbcDataAdapter(CMDOBC);
conexoodbc.Open();
int idx=VerificaExpressao(查询);
if(idx<0)
cmdOdbc.ExecuteNonQuery();
其他的
{
cmdOdbc.ExecuteScalar();
}
daOdbc.Fill(dsResultado,“结果”);
}
其他的
conexoodbc.Close();
}
捕获(例外情况除外)
{
Console.WriteLine(例如ToString());
exc=真;
}
最后
{
conexoodbc.Close();
}
if(exc)
返回“”;
其他的
返回dsResultado;
}
私有静态int-VerificaExpressao(字符串查询)
{
int idx=query.IndexOf(“创建”,StringComparison.CurrentCultureIgnoreCase);
如果(idx==-1)
idx=query.IndexOf(“Drop”,StringComparison.CurrentCultureIgnoreCase);
如果(idx==-1)
idx=query.IndexOf(“Alter”,StringComparison.CurrentCultureIgnoreCase);
如果(idx==-1)
idx=query.IndexOf(“插入”,StringComparison.CurrentCultureIgnoreCase);
如果(idx==-1)
idx=query.IndexOf(“更新”,StringComparison.CurrentCultureIgnoreCase);
如果(idx==-1)
idx=query.IndexOf(“Exec”,StringComparison.CurrentCultureInoRecase);
返回idx;
}
仅允许选择的验证表达式方法
通过此项决议:
int idx = VerificaExpressao(query);
if (idx < 0)
cmdOdbc.ExecuteNonQuery();
else
{
cmdOdbc.ExecuteScalar();
}
完成了:)运行代码时会发生什么?有例外吗?什么都没有?@ChrisShain解决了!:)我把它放在这里,让人们知道怎么做
int idx = VerificaExpressao(query);
if (idx < 0)
cmdOdbc.ExecuteNonQuery();
else
{
cmdOdbc.ExecuteScalar();
}
cmdOdbc.ExecuteNonQuery();