c# 判断oracle数据库是否存在某表
privatevoidbutton2_Click(objectsender,EventArgse){OracleConnectionorclConn=GetOrclCon...
private void button2_Click(object sender, EventArgs e)
{
OracleConnection orclConn = GetOrclConn();
int num=0;
string tableName = comboBox2.Text + comboBox1.Text + "年";
string sql = "select count(*) into num from USER_TABLES where Table_Name ='" + tableName + "'";
OracleCommand cmd = new OracleCommand(sql, orclConn);
if ( num > 0)
{
MessageBox.Show(comboBox1.Text + "年" + comboBox2.Text + "已经存在");
}
else
{
MessageBox.Show(comboBox1.Text + "年" + comboBox2.Text + "不存在,是否新建表");
}
}
我oracle中肯定已经存在了这表,但是num的值一直都是0,是不是我得sql语句写错了?但sql语句在pl/sql里运行都是好使的。 展开
{
OracleConnection orclConn = GetOrclConn();
int num=0;
string tableName = comboBox2.Text + comboBox1.Text + "年";
string sql = "select count(*) into num from USER_TABLES where Table_Name ='" + tableName + "'";
OracleCommand cmd = new OracleCommand(sql, orclConn);
if ( num > 0)
{
MessageBox.Show(comboBox1.Text + "年" + comboBox2.Text + "已经存在");
}
else
{
MessageBox.Show(comboBox1.Text + "年" + comboBox2.Text + "不存在,是否新建表");
}
}
我oracle中肯定已经存在了这表,但是num的值一直都是0,是不是我得sql语句写错了?但sql语句在pl/sql里运行都是好使的。 展开
展开全部
你表名输入的时候得大写,要不就
select count(*) from USER_TABLES where Table_Name = upper('" + tableName + "')
因为USER_TABLES里的表名严格区分大小写,而USER_TABLES里表名都是以大写形式存在的
select count(*) from USER_TABLES where Table_Name = upper('" + tableName + "')
因为USER_TABLES里的表名严格区分大小写,而USER_TABLES里表名都是以大写形式存在的
追问
string ConnectionString = "(CONNECT_DATA=(SERVICE_NAME=orcl)));User ID=orcl;Password=orcl";
谢谢,这是我数据库的连接,还有,我得表名是汉字,不涉及到大小写。有字数限制,数据库连接就没写全
追答
数据库连接里,第一个左括号你写错了吧
你用的是中文写法吧,换成英文那种
展开全部
楼主,我感觉问题出在你的SQL上:
string sql = "select count(*) into num from USER_TABLES where Table_Name ='" + tableName + "'";
num放在sql是应该是无效的。
建议你把sql改为:
string sql = "select count(*) from USER_TABLES where Table_Name ='" + tableName + "'";
然后再将查询的结果赋值给num。
这样百分百是正确的。
有问题欢迎提问,满意请采纳!
string sql = "select count(*) into num from USER_TABLES where Table_Name ='" + tableName + "'";
num放在sql是应该是无效的。
建议你把sql改为:
string sql = "select count(*) from USER_TABLES where Table_Name ='" + tableName + "'";
然后再将查询的结果赋值给num。
这样百分百是正确的。
有问题欢迎提问,满意请采纳!
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先要确保你plsql和代码,使用的是同一个user访问的。
追问
是同一个啊
追答
badkano说的对,ORACLE默认的数据库名都是大写的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询